######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-devel4 yum insall -y openssl-devel5 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 install9 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 -antluptActive 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 stopStopping 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 -IHTTP/1.1 200 OKServer: nginx/1.12.0 ###版本信息会显示出来,不合理###Date: Wed, 19 Jul 2017 03:59:11 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Wed, 19 Jul 2017 03:57:23 GMTConnection: keep-aliveETag: "596ed8a3-264"Accept-Ranges: bytes[root@server1 nginx]# pwd/usr/local/lnmp/nginx[root@server1 nginx]# du -sh5.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.0make 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/corevim nginx.h 内容:#define nginx_version 1012000#define NGINX_VERSION "1.12.0"#define NGINX_VER "nginx/" ###将版本信息删除###8 cd /root/nginx-1.12.0/auto/ccvim gcc内容: 171 # debug172 #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_modul10 make && make install11 ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/ ###软连接,更方便访问###测试:[root@server1 nginx]# du -sh988K [root@server1 nginx]# curl -I localhostHTTP/1.1 200 OKServer: nginx/Date: Thu, 20 Jul 2017 03:19:28 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Thu, 20 Jul 2017 03:16:18 GMTConnection: keep-aliveETag: "59702082-264"Accept-Ranges: bytes具体过程如下:[root@server1 ~]# tar zxf nginx-1.12.0.tar.gz [root@server1 ~]# lsanaconda-ks.cfg install.log.syslog varnish-3.0.5-1.el6.x86_64.rpmbansys.zip nginx-1.12.0 varnish-libs-3.0.5-1.el6.x86_64.rpminstall.log nginx-1.12.0.tar.gz[root@server1 ~]# cd nginx-1.12.0[root@server1 nginx-1.12.0]# lsauto 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 foundchecking for PCRE library in /usr/local/ ... not foundchecking for PCRE library in /usr/include/pcre/ ... not foundchecking for PCRE library in /usr/pkg/ ... not foundchecking 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_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically from the source with nginx by using --with-pcre=<path> option.***********************************************************************************####由此可见缺少PCRE library,因此要安装pcre-devel#####[root@server1 nginx-1.12.0]# rpm -q gccgcc-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 gccgcc-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 foundchecking for OpenSSL library ... not foundchecking for OpenSSL library in /usr/local/ ... not foundchecking for OpenSSL library in /usr/pkg/ ... not foundchecking 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 libraryinto the system, or build the OpenSSL library statically from the sourcewith nginx by using --with-openssl=<path> 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]# lsnginx[root@server1 lnmp]# cd nginx/[root@server1 nginx]# lsconf html logs sbin[root@server1 nginx]# du -sh5.9M .[root@server1 nginx]# lsconf html logs sbin[root@server1 nginx]# cd sbin/[root@server1 sbin]# lsnginx[root@server1 sbin]# ./nginx [root@server1 sbin]# netstat -antlpActive 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 -IHTTP/1.1 200 OKServer: nginx/1.12.0 ###版本信息会显示出来,不合理###Date: Wed, 19 Jul 2017 03:59:11 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Wed, 19 Jul 2017 03:57:23 GMTConnection: keep-aliveETag: "596ed8a3-264"Accept-Ranges: bytes[root@server1 sbin]# ./nginx -s stop[root@server1 sbin]# netstat -antlpActive 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 cleanrm -rf Makefile objs[root@server1 nginx-1.12.0]# cd ..[root@server1 ~]# rm -fr nginx-1.12.0[root@server1 ~]# lsanaconda-ks.cfg nginx-1.12.0.tar.gzbansys.zip varnish-3.0.5-1.el6.x86_64.rpminstall.log varnish-libs-3.0.5-1.el6.x86_64.rpminstall.log.syslog[root@server1 ~]# tar zxf nginx-1.12.0.tar.gz [root@server1 ~]# lsanaconda-ks.cfg nginx-1.12.0bansys.zip nginx-1.12.0.tar.gzinstall.log varnish-3.0.5-1.el6.x86_64.rpminstall.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]# lsauto CHANGES.ru configure html man srcCHANGES conf contrib LICENSE README[root@server1 nginx-1.12.0]# cd src/[root@server1 src]# lscore 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]# lscc have init module os threadsdefine have_headers install modules sources typesendianness headers lib nohave stubs unixfeature include make options summary[root@server1 auto]# cd cc/[root@server1 cc]# lsacc 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]# lsauto CHANGES.ru configure html man srcCHANGES 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]# lsconf html logs sbin[root@server1 nginx]# du -sh960K .[root@server1 nginx]# cd sbin/[root@server1 sbin]# lsnginx[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 localhostHTTP/1.1 200 OKServer: nginx/Date: Wed, 19 Jul 2017 04:07:59 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Wed, 19 Jul 2017 04:05:33 GMTConnection: keep-aliveETag: "596eda8d-264"Accept-Ranges: bytes###使用yum安装时应该要看安装时的脚本,防止一些流氓软件###以httpd为例:[root@server1 lnmp]# rpm -q --scripts httpdpreinstall scriptlet (using /bin/sh): ###安装前执行的脚本### Add the "apache" usergetent group apache >/dev/null || groupadd -g 48 -r apachegetent passwd apache >/dev/null || \ useradd -r -u 48 -g apache -s /sbin/nologin \ -d /var/www -c "Apache" apacheexit 0postinstall scriptlet (using /bin/sh): ###安装后执行的脚本### Register the httpd service/sbin/chkconfig --add httpd/sbin/chkconfig --add htcachecleanpreuninstall 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 htcachecleanfiposttrans 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 Relocations: (not relocatable)Version : 2.2.15 Vendor: Red Hat, Inc.Release : 29.el6_4 Build Date: Fri 02 Aug 2013 08:03:06 PM CSTInstall Date: Wed 19 Jul 2017 09:34:59 AM CST Build Host: x86-002.build.bos.redhat.comGroup : System Environment/Daemons Source RPM: httpd-2.2.15-29.el6_4.src.rpmSize : 3075393 License: ASL 2.0Signature : RSA/8, Mon 12 Aug 2013 09:49:45 PM CST, Key ID 199e2f91fd431d51Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>URL : http://httpd.apache.org/Summary : Apache HTTP ServerDescription :The Apache HTTP Server is a powerful, efficient, and extensibleweb 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 reload ###重新加载nginx###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 -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 14868max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 65535 ###发现已经改变成了65535###pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited-bash-4.1$ ##nginx -s reload##有多少核就有几位数,2核是01,四核是0001,8核是00000001,以此类推###[root@server1 conf]# sysctl -a | grep file ###sysctl -a指显示所有的系统参数###fs.file-nr = 512 0 188464fs.file-max = 188464####nginx建立虚拟主机###默认发布目录:/usr/local/lnmp/nginx/html1 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 /web13 vim /web1/index.html内容:<h1>www.westos.org</h1>4 nginx -s reload 测试:具体过程如下:[root@server1 lnmp]# cd /usr/local/lnmp/nginx/conf/[root@server1 conf]# lsfastcgi.conf koi-win scgi_paramsfastcgi.conf.default mime.types scgi_params.defaultfastcgi_params mime.types.default uwsgi_paramsfastcgi_params.default nginx.conf uwsgi_params.defaultkoi-utf nginx.conf.default win-utf[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -s reload[root@server1 conf]# nginx -t nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload[root@server1 conf]# netstat -antlpActive 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 filefs.file-nr = 544 0 188464fs.file-max = 188464[root@server1 conf]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 14868max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 14868virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited[root@server1 conf]# id 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 -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 14868max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile 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 oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload ###重新加载###[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 reload[root@server1 web1]# cd /usr/local/lnmp/[root@server1 lnmp]# lsnginx[root@server1 lnmp]# cd nginx/[root@server1 nginx]# lsclient_body_temp fastcgi_temp logs sbin uwsgi_tempconf html proxy_temp scgi_temp[root@server1 nginx]# cd html/[root@server1 html]# ls50x.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 $PEM2Generating 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 incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:cnState or Province Name (full name) []:shaanxiLocality Name (eg, city) [Default City]:xi'anOrganization Name (eg, company) [Default Company Ltd]:westosOrganizational Unit Name (eg, section) []:linuxCommon Name (eg, your name or your server's hostname) []:server1Email 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 reload 测试:登入https://172.25.38.1具体过程如下:[root@server1 conf]# cd /etc/pki/tls/certs/[root@server1 certs]# lsca-bundle.crt ca-bundle.trust.crt make-dummy-cert Makefile renew-dummy-cert[root@server1 certs]# make cert.pemumask 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 $PEM2Generating 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 incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:cnState or Province Name (full name) []:shaanxiLocality Name (eg, city) [Default City]:xi'anOrganization Name (eg, company) [Default Company Ltd]:westosOrganizational Unit Name (eg, section) []:linuxCommon Name (eg, your name or your server's hostname) []:server1Email Address []:root@westos.org[root@server1 certs]# lltotal 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]# lscert.pem koi-win scgi_params.defaultfastcgi.conf mime.types uwsgi_paramsfastcgi.conf.default mime.types.default uwsgi_params.defaultfastcgi_params nginx.conf win-utffastcgi_params.default nginx.conf.defaultkoi-utf scgi_params[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -tnginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload[root@server1 conf]# netstat -antlpActive 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.org1 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 reload3 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 reload测试:访问http://172.25.38.1/statusActive 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 -tnginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -tnginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload[root@server1 conf]# cd /web1/[root@server1 web1]# lsindex.html[root@server1 web1]# mkdir admin[root@server1 web1]# lsadmin 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]# lsbin 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 -tnginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful[root@server1 conf]# nginx -s reload[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -s reload[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -s reload[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 restartStopping httpd: [FAILED]Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.38.1 for ServerName [ OK ][root@server1 conf]# /etc/init.d/httpd startStarting httpd: [root@server1 conf]# /etc/init.d/httpd restartStopping httpd: [ OK ]Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.38.1 for ServerName [ OK ][root@server1 conf]# nginx -s reload[root@server1 conf]# cd /var/www/html/[root@server1 html]# lsclass_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 restartStopping httpd: [ OK ]Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.38.1 for ServerName [ OK ][root@server1 html]# ls[root@server1 html]# mv /index.html ./[root@server1 html]# lsindex.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]# lscert.pem koi-win scgi_params.defaultfastcgi.conf mime.types uwsgi_paramsfastcgi.conf.default mime.types.default uwsgi_params.defaultfastcgi_params nginx.conf win-utffastcgi_params.default nginx.conf.defaultkoi-utf scgi_params[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -s reload[root@server1 conf]# vim nginx.conf[root@server1 conf]# nginx -s reload