设为首页 收藏本站
查看: 1006|回复: 0

[经验分享] nginx-12764272

[复制链接]

尚未签到

发表于 2018-11-12 07:56:04 | 显示全部楼层 |阅读模式
  ######nginx#####
  ###通过源码编译安装nginx###
  使用configure,make,make install命令
  1 从官网上下载 www.nginx.org 安装包,选稳定版的比较好
  安装前要确保系统中有gcc,查看系统是否安装了gcc:
  rpm  -q  gcc
  2 tar zxf nginx-1.12.0.tar.gz
  3 yum install -y pcre-devel
  4 yum insall -y openssl-devel
  5 useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin  -u 800 nginx        ###创建nginx用户###
  6 cd nginx-1.12.0     ###congigure在此目录下
  7  ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_modul
  #####参数说明####
  --prefix=/usr/local/lnmp/nginx      ###定义一个能够保存服务文件的目录
  --user=nginx                ###设定用户,该用户要系统中存在,如果没有设定,默认是nobody###
  --group=nginx                ###设定组###
  --with-threads                ###支持线程###
  --with-http_ssl_module            ###允许加载一个模块,为http添加https支持###
  --with-http_stub_status_modul        ###允许加载一个模块,提供了nginx基础状态信息的访问接口,连接数量,处理的请求等
  8 make && make install
  9 cd /usr/local/lnmp/nginx/conf        ###nginx默认的配置文件nginx.conf在该目录下###
  10 cd /usr/local/lnmp/nginx/sbin/    ###nginx服务在该目录下###
  11 ./nginx                 ###开启服务##
  开启时碰到了无法开启的情况:端口被占用
  nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: [emerg] still could not bind()
  解决:
  由于nginx的默认开启端口是80,查看以下端口的使用情况:
  [root@server1 sbin]# netstat -antlupt
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1121/varnishd
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      910/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      986/master
  tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1119/varnishd
  tcp        0      0 172.25.78.1:22              172.25.78.250:36468         ESTABLISHED 1050/sshd
  tcp        0      0 :::8080                     :::*                        LISTEN      1249/httpd
  tcp        0      0 :::80                       :::*                        LISTEN      1121/varnishd
  tcp        0      0 :::22                       :::*                        LISTEN      910/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      986/master
  由此可见,varnish占用了80端口,只需将varnish服务关闭,或者修改varnish的端口
  [root@server1 sbin]# /etc/init.d/varnish stop
  Stopping Varnish Cache:                                    [  OK  ]
  再次开启nginx服务
  [root@server1 sbin]# ./nginx
  [root@server1 sbin]# netstat -antlupt | grep nginx
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      6323/nginx
  测试:
  curl    -I    localhost
  [root@server1 sbin]# curl  localhost -I
  HTTP/1.1 200 OK
  Server: nginx/1.12.0        ###版本信息会显示出来,不合理###
  Date: Wed, 19 Jul 2017 03:59:11 GMT
  Content-Type: text/html
  Content-Length: 612
  Last-Modified: Wed, 19 Jul 2017 03:57:23 GMT
  Connection: keep-alive
  ETag: "596ed8a3-264"
  Accept-Ranges: bytes
  [root@server1 nginx]# pwd
  /usr/local/lnmp/nginx
  [root@server1 nginx]# du -sh
  5.9M    .
  ###由于debug 模式编译存在,因此,会比较大,可以把debug模式编译去掉,编译以后程序只有几百 k###
  ####为了将版本信息隐藏,并且使编译后的程序只有几百 k,进行重新编译###
  1 cd /usr/local/lnmp/nginx/sbin/
  ./nginx -s stop                ###将nginx服务关闭###
  2 netstat -antlp            ###查看,确认服务关闭##
  3 rm -fr /usr/local/lnmp/nginx/        ###删除服务的文件目录###
  4 cd nginx-1.12.0
  make clean                ###重新编译时,需要清除旧的对象文件和缓存信息###
  5 rm -fr nginx-1.12.0            ###删除解压目录###
  6 tar zxf nginx-1.12.0.tar.gz         ###重新解压###
  7 cd /root/nginx-1.12.0/src/core
  vim nginx.h
  内容:
  #define nginx_version      1012000
  #define NGINX_VERSION      "1.12.0"
  #define NGINX_VER          "nginx/"    ###将版本信息删除###
  8 cd /root/nginx-1.12.0/auto/cc
  vim gcc
  内容:
  171 # debug
  172 #CFLAGS="$CFLAGS -g"        把debug模式编译去掉
  9  ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_modul
  10 make && make install
  11  ln -s  /usr/local/lnmp/nginx/sbin/nginx   /sbin/    ###软连接,更方便访问###
  测试:
  [root@server1 nginx]# du -sh
  988K
  [root@server1 nginx]# curl -I localhost
  HTTP/1.1 200 OK
  Server: nginx/
  Date: Thu, 20 Jul 2017 03:19:28 GMT
  Content-Type: text/html
  Content-Length: 612
  Last-Modified: Thu, 20 Jul 2017 03:16:18 GMT
  Connection: keep-alive
  ETag: "59702082-264"
  Accept-Ranges: bytes
  具体过程如下:
  [root@server1 ~]# tar zxf nginx-1.12.0.tar.gz
  [root@server1 ~]# ls
  anaconda-ks.cfg  install.log.syslog   varnish-3.0.5-1.el6.x86_64.rpm
  bansys.zip       nginx-1.12.0         varnish-libs-3.0.5-1.el6.x86_64.rpm
  install.log      nginx-1.12.0.tar.gz
  [root@server1 ~]# cd nginx-1.12.0
  [root@server1 nginx-1.12.0]# ls
  auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
  [root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
  (省略.....)
  出现的问题:
  ********************************************************************************
  checking for PCRE library ... not found
  checking for PCRE library in /usr/local/ ... not found
  checking for PCRE library in /usr/include/pcre/ ... not found
  checking for PCRE library in /usr/pkg/ ... not found
  checking for PCRE library in /opt/local/ ... not found
  ./configure: error: the HTTP rewrite module requires the PCRE library.
  You can either disable the module by using --without-http_rewrite_module
  option, or install the PCRE library into the system, or build the PCRE library
  statically from the source with nginx by using --with-pcre= option.
  ***********************************************************************************
  ####由此可见缺少PCRE library,因此要安装pcre-devel#####
  [root@server1 nginx-1.12.0]# rpm -q gcc
  gcc-4.4.7-4.el6.x86_64
  [root@server1 nginx-1.12.0]# yum install -y pcre-devel
  [root@server1 nginx-1.12.0]# rpm -q gcc
  gcc-4.4.7-4.el6.x86_64
  [root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
  (省略安装过程.....)
  出现的问题:
  **************************************************************************
  checking for PCRE JIT support ... not found
  checking for OpenSSL library ... not found
  checking for OpenSSL library in /usr/local/ ... not found
  checking for OpenSSL library in /usr/pkg/ ... not found
  checking for OpenSSL library in /opt/local/ ... not found
  ./configure: error: SSL modules require the OpenSSL library.
  You can either do not enable the modules, or install the OpenSSL library
  into the system, or build the OpenSSL library statically from the source
  with nginx by using --with-openssl= option.
  **************************************************************************
  ###由提示可以看出缺少OpenSSL library,因此要安装openssl-devel####
  [root@server1 nginx-1.12.0]# yum install -y openssl-devel
  [root@server1 ~]# useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin  -u 800 nginx
  [root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
  (省略安装过程.....)
  ####没有报错,说明配置成功,一般在安装过程中如果缺少什么,就安装对应的 xxxx-devel,因为devel是c开发包,包含c的头文件和库####
  [root@server1 nginx-1.12.0]# make && make install
  [root@server1 nginx-1.12.0]# cd /usr/local/lnmp/
  [root@server1 lnmp]# ls
  nginx
  [root@server1 lnmp]# cd nginx/
  [root@server1 nginx]# ls
  conf  html  logs  sbin
  [root@server1 nginx]# du -sh
  5.9M    .
  [root@server1 nginx]# ls
  conf  html  logs  sbin
  [root@server1 nginx]# cd sbin/
  [root@server1 sbin]# ls
  nginx
  [root@server1 sbin]# ./nginx
  [root@server1 sbin]# netstat -antlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      6060/nginx
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      900/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      976/master
  tcp        0      0 172.25.38.1:22              172.25.38.250:39568         ESTABLISHED 1040/sshd
  tcp        0      0 172.25.38.1:22              172.25.38.250:39572         ESTABLISHED 1067/sshd
  tcp        0      0 :::22                       :::*                        LISTEN      900/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      976/master
  [root@server1 sbin]# curl  localhost -I
  HTTP/1.1 200 OK
  Server: nginx/1.12.0        ###版本信息会显示出来,不合理###
  Date: Wed, 19 Jul 2017 03:59:11 GMT
  Content-Type: text/html
  Content-Length: 612
  Last-Modified: Wed, 19 Jul 2017 03:57:23 GMT
  Connection: keep-alive
  ETag: "596ed8a3-264"
  Accept-Ranges: bytes
  [root@server1 sbin]# ./nginx -s stop
  [root@server1 sbin]# netstat -antlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      900/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      976/master
  tcp        0      0 172.25.38.1:22              172.25.38.250:39568         ESTABLISHED 1040/sshd
  tcp        0      0 127.0.0.1:59479             127.0.0.1:80                TIME_WAIT   -
  tcp        0      0 127.0.0.1:59481             127.0.0.1:80                TIME_WAIT   -
  tcp        0      0 172.25.38.1:22              172.25.38.250:39572         ESTABLISHED 1067/sshd
  tcp        0      0 :::22                       :::*                        LISTEN      900/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      976/master
  [root@server1 sbin]# cd /usr/local/
  [root@server1 local]# cd lnmp/
  [root@server1 lnmp]# rm -fr nginx/
  [root@server1 ~]# cd nginx-1.12.0
  [root@server1 nginx-1.12.0]# make clean
  rm -rf Makefile objs
  [root@server1 nginx-1.12.0]# cd ..
  [root@server1 ~]# rm -fr nginx-1.12.0
  [root@server1 ~]# ls
  anaconda-ks.cfg     nginx-1.12.0.tar.gz
  bansys.zip          varnish-3.0.5-1.el6.x86_64.rpm
  install.log         varnish-libs-3.0.5-1.el6.x86_64.rpm
  install.log.syslog
  [root@server1 ~]# tar zxf nginx-1.12.0.tar.gz
  [root@server1 ~]# ls
  anaconda-ks.cfg     nginx-1.12.0
  bansys.zip          nginx-1.12.0.tar.gz
  install.log         varnish-3.0.5-1.el6.x86_64.rpm
  install.log.syslog  varnish-libs-3.0.5-1.el6.x86_64.rpm
  [root@server1 ~]# cd nginx-1.12.0
  [root@server1 nginx-1.12.0]# ls
  auto     CHANGES.ru  configure  html     man     src
  CHANGES  conf        contrib    LICENSE  README
  [root@server1 nginx-1.12.0]# cd src/
  [root@server1 src]# ls
  core  event  http  mail  misc  os  stream
  [root@server1 src]# cd core/
  [root@server1 core]# vim nginx.h
  [root@server1 core]# cd ..
  [root@server1 src]# cd ..
  [root@server1 nginx-1.12.0]# cd auto/
  [root@server1 auto]# ls
  cc          have          init     module   os       threads
  define      have_headers  install  modules  sources  types
  endianness  headers       lib      nohave   stubs    unix
  feature     include       make     options  summary
  [root@server1 auto]# cd cc/
  [root@server1 cc]# ls
  acc  bcc  ccc  clang  conf  gcc  icc  msvc  name  owc  sunc
  [root@server1 cc]# vim gcc
  [root@server1 cc]# cd ..
  [root@server1 auto]# cd ..
  [root@server1 nginx-1.12.0]# ls
  auto     CHANGES.ru  configure  html     man     src
  CHANGES  conf        contrib    LICENSE  README
  [root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
  [root@server1 nginx-1.12.0]# make  && make  install
  [root@server1 nginx-1.12.0]# cd /usr/local/lnmp/nginx/
  [root@server1 nginx]# ls
  conf  html  logs  sbin
  [root@server1 nginx]# du -sh
  960K    .
  [root@server1 nginx]# cd sbin/
  [root@server1 sbin]# ls
  nginx
  [root@server1 sbin]# ./nginx
  [root@server1 sbin]# pwd
  /usr/local/lnmp/nginx/sbin
  [root@server1 sbin]# ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/
  [root@server1 sbin]# which nginx
  /sbin/nginx
  [root@server1 sbin]# curl -I localhost
  HTTP/1.1 200 OK
  Server: nginx/
  Date: Wed, 19 Jul 2017 04:07:59 GMT
  Content-Type: text/html
  Content-Length: 612
  Last-Modified: Wed, 19 Jul 2017 04:05:33 GMT
  Connection: keep-alive
  ETag: "596eda8d-264"
  Accept-Ranges: bytes
  ###使用yum安装时应该要看安装时的脚本,防止一些流氓软件###
  以httpd为例:
  [root@server1 lnmp]# rpm -q --scripts httpd
  preinstall scriptlet (using /bin/sh):        ###安装前执行的脚本##
  # Add the "apache" user
  getent group apache >/dev/null || groupadd -g 48 -r apache
  getent passwd apache >/dev/null || \
  useradd -r -u 48 -g apache -s /sbin/nologin \
  -d /var/www -c "Apache" apache
  exit 0
  postinstall scriptlet (using /bin/sh):        ###安装后执行的脚本##
  # Register the httpd service
  /sbin/chkconfig --add httpd
  /sbin/chkconfig --add htcacheclean
  preuninstall scriptlet (using /bin/sh):
  if [ $1 = 0 ]; then
  /sbin/service httpd stop > /dev/null 2>&1
  /sbin/chkconfig --del httpd
  /sbin/service htcacheclean stop > /dev/null 2>&1
  /sbin/chkconfig --del htcacheclean
  fi
  posttrans scriptlet (using /bin/sh):
  test -f /etc/sysconfig/httpd-disable-posttrans || \
  /sbin/service httpd condrestart >/dev/null 2>&1 || :
  [root@server1 lnmp]# rpm -qi httpd    ###查看httpd的信息##

  Name        : httpd                       >  Version     : 2.2.15                            Vendor: Red Hat, Inc.
  Release     : 29.el6_4                      Build Date: Fri 02 Aug 2013 08:03:06 PM CST
  Install Date: Wed 19 Jul 2017 09:34:59 AM CST      Build Host: x86-002.build.bos.redhat.com
  Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-29.el6_4.src.rpm
  Size        : 3075393                          License: ASL 2.0

  Signature   : RSA/8, Mon 12 Aug 2013 09:49:45 PM CST, Key>  Packager    : Red Hat, Inc.
  URL         : http://httpd.apache.org/
  Summary     : Apache HTTP Server
  Description :
  The Apache HTTP Server is a powerful, efficient, and extensible
  web server.
  ####nginx绑定cpu###
  1 vim /usr/local/lnmp/nginx/conf/nginx.conf
  内容:
  worker_processes  2;        ###表示开启两个nginx进程###
  worker_cpu_affinity 01 10;    ###第一个进程对应第一个cpu内核,第二个进程对应第二个cpu内核###
  events {
  worker_connections  65535;    ###允许连接进程的最大数,不能大于fs.file-max的数###
  }
  2 nginx -t            ###查看配置文件是否有语法错误###

  3 nginx -s>  4  vim  /etc/security/limits.conf    ###在该文件下编写才会生效###
  nginx        -        nofile        65535
  测试:
  切换到nginx用户,执行ulimit    -a
  (在切换前,要将nginx用户改成可以登入usermod -s /bin/bash nginx)
  [root@server1 ~]# su - nginx
  -bash-4.1$ ulimit -a

  core file>
  data seg>  scheduling priority             (-e) 0

  file>  pending signals                 (-i) 14868
  max locked memory       (kbytes, -l) 64

  max memory>  open files                      (-n) 65535        ###发现已经改变成了65535###

  pipe>  POSIX message queues     (bytes, -q) 819200
  real-time priority              (-r) 0

  stack>  cpu time               (seconds, -t) unlimited
  max user processes              (-u) 1024
  virtual memory          (kbytes, -v) unlimited
  file locks                      (-x) unlimited
  -bash-4.1$

  ##nginx -s>  [root@server1 conf]# sysctl  -a | grep file        ###sysctl  -a指显示所有的系统参数###
  fs.file-nr = 512    0    188464
  fs.file-max = 188464
  ####nginx建立虚拟主机###
  默认发布目录:
  /usr/local/lnmp/nginx/html
  1 vim /usr/local/lnmp/nginx/conf/nginx.conf
  内容:注意该内容要写在http下
  server {
  listen 80;                ###访问80端口###
  server_name www.westos.org;        ###服务器名称###
  location / {
  root     /web1;            ###发布目录###
  index    index.html;        ###网页###
  }
  }
  2 mkdir /web1
  3 vim /web1/index.html
  内容:
  www.westos.org

  4 nginx -s>  测试:
  具体过程如下:
  [root@server1 lnmp]# cd /usr/local/lnmp/nginx/conf/
  [root@server1 conf]# ls
  fastcgi.conf            koi-win             scgi_params
  fastcgi.conf.default    mime.types          scgi_params.default
  fastcgi_params          mime.types.default  uwsgi_params
  fastcgi_params.default  nginx.conf          uwsgi_params.default
  koi-utf                 nginx.conf.default  win-utf
  [root@server1 conf]# vim nginx.conf

  [root@server1 conf]# nginx -s>  [root@server1 conf]# nginx -t
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# netstat -antlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      8673/nginx
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      900/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      976/master
  tcp        0      0 172.25.38.1:22              172.25.38.250:39568         ESTABLISHED 1040/sshd
  tcp        0      0 172.25.38.1:22              172.25.38.250:39572         ESTABLISHED 1067/sshd
  tcp        0      0 :::22                       :::*                        LISTEN      900/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      976/master
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# sysctl -a | grep file
  fs.file-nr = 544    0    188464
  fs.file-max = 188464
  [root@server1 conf]# ulimit -a

  core file>
  data seg>  scheduling priority             (-e) 0

  file>  pending signals                 (-i) 14868
  max locked memory       (kbytes, -l) 64

  max memory>  open files                      (-n) 1024

  pipe>  POSIX message queues     (bytes, -q) 819200
  real-time priority              (-r) 0

  stack>  cpu time               (seconds, -t) unlimited
  max user processes              (-u) 14868
  virtual memory          (kbytes, -v) unlimited
  file locks                      (-x) unlimited

  [root@server1 conf]#>  uid=0(root) gid=0(root) groups=0(root)
  [root@server1 conf]# vim /etc/security/limits.conf
  [root@server1 conf]# usermod -s /bin/bash nginx
  [root@server1 conf]# su - nginx
  -bash-4.1$ ulimit -a

  core file>
  data seg>  scheduling priority             (-e) 0

  file>  pending signals                 (-i) 14868
  max locked memory       (kbytes, -l) 64

  max memory>  open files                      (-n) 1024

  pipe>  POSIX message queues     (bytes, -q) 819200
  real-time priority              (-r) 0

  stack>  cpu time               (seconds, -t) unlimited
  max user processes              (-u) 1024
  virtual memory          (kbytes, -v) unlimited
  file locks                      (-x) unlimited
  -bash-4.1$ exit
  logout
  [root@server1 conf]# usermod -s /sbin/nologin nginx
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# nginx -t        ###查看是否有语法错误##
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# mkdir /web1
  [root@server1 conf]# cd /web1/
  [root@server1 web1]# ls
  [root@server1 web1]# vim index.html

  [root@server1 web1]# nginx -s>  [root@server1 web1]# cd /usr/local/lnmp/
  [root@server1 lnmp]# ls
  nginx
  [root@server1 lnmp]# cd nginx/
  [root@server1 nginx]# ls
  client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
  conf              html          proxy_temp  scgi_temp
  [root@server1 nginx]# cd html/
  [root@server1 html]# ls
  50x.html  index.html
  ####https####
  端口为443,配置前要确认安装了openssl和openssl-devel,由于之前源码编译时已经安装过,所以在这里就不用再次安装。
  信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书
  希望服务器与客户端之间传输内容是加密的,防止中间监听泻露信息,就可以用https进行访问的加密。如果用于内部人员的访问,可以自己颁发证书。
  1 cd     /etc/pki/tls/certs/
  2 make cert.pem            ###产生证书和密钥,用该命令会将证书和key放在一个文件里,这样在nginx的配置文件里就不用写两个文件###
  【过程:
  umask 77 ; \
  PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
  PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
  /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
  cat $PEM1 >  cert.pem ; \
  echo ""    >> cert.pem ; \
  cat $PEM2 >> cert.pem ; \
  rm -f $PEM1 $PEM2
  Generating a 2048 bit RSA private key
  ........................................................+++
  ..............................+++
  writing new private key to '/tmp/openssl.UVFnm7'
  -----
  You are about to be asked to enter information that will be incorporated
  into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  There are quite a few fields but you can leave some blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [XX]:cn
  State or Province Name (full name) []:shaanxi
  Locality Name (eg, city) [Default City]:xi'an
  Organization Name (eg, company) [Default Company Ltd]:westos
  Organizational Unit Name (eg, section) []:linux
  Common Name (eg, your name or your server's hostname) []:server1
  Email Address []:root@westos.org
  】
  3 mv /etc/pki/tls/certs/cert.pem  /usr/local/lnmp/nginx/conf/  ###在nginx中的配置文件里,给的是相对地址,因此要将其移到配置文件的目录下###
  4 vim  /usr/local/lnmp/nginx/conf/nginx.conf
  内容:
  server {
  listen       443 ssl;
  server_name  www.westos.org;
  ssl_certificate      cert.pem;
  ssl_certificate_key  cert.pem;
  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  location / {
  root   /web1;
  index  index.html index.htm;
  }

  8 nginx       -s     >  测试:
  登入https://172.25.38.1
  具体过程如下:
  [root@server1 conf]# cd /etc/pki/tls/certs/
  [root@server1 certs]# ls
  ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
  [root@server1 certs]# make cert.pem
  umask 77 ; \
  PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
  PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
  /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
  cat $PEM1 >  cert.pem ; \
  echo ""    >> cert.pem ; \
  cat $PEM2 >> cert.pem ; \
  rm -f $PEM1 $PEM2
  Generating a 2048 bit RSA private key
  ........................................................+++
  ..............................+++
  writing new private key to '/tmp/openssl.UVFnm7'
  -----
  You are about to be asked to enter information that will be incorporated
  into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  There are quite a few fields but you can leave some blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [XX]:cn
  State or Province Name (full name) []:shaanxi
  Locality Name (eg, city) [Default City]:xi'an
  Organization Name (eg, company) [Default Company Ltd]:westos
  Organizational Unit Name (eg, section) []:linux
  Common Name (eg, your name or your server's hostname) []:server1
  Email Address []:root@westos.org
  [root@server1 certs]# ll
  total 1716
  -rw-r--r--. 1 root root 753868 Sep  4  2013 ca-bundle.crt
  -rw-r--r--. 1 root root 974993 Sep  4  2013 ca-bundle.trust.crt
  -rw-------  1 root root   3088 Jul 19 15:31 cert.pem
  -rw-------  1 root root   1383 Jul 19 15:29 localhost.crt
  -rwxr-xr-x. 1 root root    610 Sep 27  2013 make-dummy-cert
  -rw-r--r--. 1 root root   2242 Sep 27  2013 Makefile
  -rwxr-xr-x. 1 root root    829 Sep 27  2013 renew-dummy-cert
  [root@server1 certs]# ll cert.pem
  -rw------- 1 root root 3088 Jul 19 15:31 cert.pem
  [root@server1 certs]# mv cert.pem  /usr/local/lnmp/nginx/conf/  ###在nginx中的配置文件里,给的是相对地址,因此要将其移到配置文件的目录下###
  [root@server1 certs]# cd /usr/local/lnmp/nginx/conf/
  [root@server1 conf]# ls
  cert.pem                koi-win             scgi_params.default
  fastcgi.conf            mime.types          uwsgi_params
  fastcgi.conf.default    mime.types.default  uwsgi_params.default
  fastcgi_params          nginx.conf          win-utf
  fastcgi_params.default  nginx.conf.default
  koi-utf                 scgi_params
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# nginx -t
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# netstat -antlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      8673/nginx
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      900/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      976/master
  tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      8673/nginx
  tcp        0      0 172.25.38.1:22              172.25.38.250:39568         ESTABLISHED 1040/sshd
  tcp        0      0 172.25.38.1:22              172.25.38.250:39572         ESTABLISHED 1067/sshd
  tcp        0      0 :::22                       :::*                        LISTEN      900/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      976/master
  ###网页重写###
  当访问www.westos.org时重写成https://www.westos.org
  1 vim /usr/local/lnmp/nginx/conf/nginx.conf
  内容:
  server {
  listen       443 ssl;
  server_name  www.westos.org;
  ssl_certificate      cert.pem;
  ssl_certificate_key  cert.pem;
  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  location / {
  root   /web1;
  index  index.html index.htm;
  }
  }
  server  {
  listen       80;
  server_name  www.westos.org;
  rewrite        ^(.*)$ https://www.westos.org$1 permanent;    ###把你输入的url重定向成https://www.westos.org,permanent表示永久重定向,redirect表示临时重定向,$1表示可以指定访问www.westos.org的目录###
  }

  2 nginx  -s  >  3 vim  /web1/admin/index.html
  内容:
  admin  page
  测试:
  访问www.westos.org和www.westos.org/admin
  ###监控连接数###
  在源码编译nginx的时候编译了--with-http_stub_status_modul该模块,nginx的监控就是该模块的应用
  1 vim /usr/local/lnmp/nginx/conf/nginx.conf
  内容:
  server {
  listen       80;
  server_name  localhost;
  location /status {        ###/status是一个监控的模块,在源码安装时导入的模块####
  stub_status on;
  access_log off;
  allow 172.25.38.2;        ###允许172.25.38.2主机连接##
  deny  all;            ###拒绝除了172.25.38.2之外的其他主机连接,allow和deny有访问的优先顺序###
  }
  }

  2 nginx -s>  测试:
  访问http://172.25.38.1/status
  Active connections: 1
  server accepts handled requests
  9 9 10
  Reading: 0 Writing: 1 Waiting: 0
  ####负载均衡###
  1 vim /usr/local/lnmp/nginx/conf/nginx.conf
  内容:
  http {
  upstream westos{            ###westos就是一个别名###
  server 172.25.38.2:80 ;            ###访问后端服务器的80端口###
  server 172.25.38.3:8080;        ###访问后端服务器的8080端口##
  server 127.0.0.1:8000 backup;        ###当后端服务器全挂了之后,就会访问本地的index.html文件(提示系统正在维护中。。。)###
  }
  server  {
  listen       80;
  server_name  www.westos.org;
  location / {
  proxy_pass http://westos;    ###默认是轮询
  }
  }
  2 vim /var/www/html/index.html
  内容:
  系统正在维护中。。。
  3
  ####负载均衡指定权重weight###
  upstream westos{
  server 172.25.38.2:80  weight=2;    ###指定访问两次172.25.38.2,再访问172.25.38.3一次###
  server 172.25.38.3:8080;
  #server 127.0.0.1:8000 backup;
  }
  ###ip_hash###
  只要来源为同一个ip的都会被指定到同一个后端服务器,不用加权重,不支持backup###
  upstream westos{
  ip_hash;
  server 172.25.38.2:80
  server 172.25.38.3:8080;
  }
  具体过程如下:
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# nginx -t
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# nginx -t
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# cd /web1/
  [root@server1 web1]# ls
  index.html
  [root@server1 web1]# mkdir admin
  [root@server1 web1]# ls
  admin  index.html
  [root@server1 web1]# cd admin/
  [root@server1 admin]# ls
  [root@server1 admin]# vim index.html
  [root@server1 admin]# vim index.html
  [root@server1 admin]# cd /usr/local/
  [root@server1 local]# ls
  bin  etc  games  include  lib  lib64  libexec  lnmp  sbin  share  src
  [root@server1 local]# cd lnmp/nginx/conf/
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# nginx -t
  nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

  [root@server1 conf]# nginx -s>  [root@server1 conf]# vim nginx.conf

  [root@server1 conf]# nginx -s>  [root@server1 conf]# vim nginx.conf

  [root@server1 conf]# nginx -s>  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# vim nginx.conf
  [root@server1 conf]# vim /etc/httpd/conf/httpd.conf
  [root@server1 conf]# /etc/init.d/httpd restart
  Stopping httpd:                                            [FAILED]

  Starting httpd: httpd: Could not>  [  OK  ]
  [root@server1 conf]# /etc/init.d/httpd start
  Starting httpd:
  [root@server1 conf]# /etc/init.d/httpd restart
  Stopping httpd:                                            [  OK  ]

  Starting httpd: httpd: Could not>  [  OK  ]

  [root@server1 conf]# nginx -s>  [root@server1 conf]# cd /var/www/html/
  [root@server1 html]# ls
  class_socket.php  config.php  index.php  purge_action.php  static
  [root@server1 html]# rm -fr *
  [root@server1 html]# vim /index.html
  [root@server1 html]# /etc/init.d/httpd restart
  Stopping httpd:                                            [  OK  ]

  Starting httpd: httpd: Could not>  [  OK  ]
  [root@server1 html]# ls
  [root@server1 html]# mv /index.html ./
  [root@server1 html]# ls
  index.html
  [root@server1 html]# cd /usr/local/
  bin/     games/   lib/     libexec/ sbin/    src/
  etc/     include/ lib64/   lnmp/    share/
  [root@server1 html]# cd /usr/local/lnmp/nginx/conf/
  [root@server1 conf]# ls
  cert.pem                koi-win             scgi_params.default
  fastcgi.conf            mime.types          uwsgi_params
  fastcgi.conf.default    mime.types.default  uwsgi_params.default
  fastcgi_params          nginx.conf          win-utf
  fastcgi_params.default  nginx.conf.default
  koi-utf                 scgi_params
  [root@server1 conf]# vim nginx.conf

  [root@server1 conf]# nginx -s>  [root@server1 conf]# vim nginx.conf

  [root@server1 conf]# nginx -s>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633880-1-1.html 上篇帖子: nginx-----nginx针对某个url限制ip访问,常用于后台访问限制 下篇帖子: Nginx-bantiaomichong
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表