首页 > 代码库 > nginx
nginx
######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=<path> 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=<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]# 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 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 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 ID 199e2f91fd431d51
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
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 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 -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14868
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535 ###发现已经改变成了65535###
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file 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 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
内容:
<h1>www.westos.org</h1>
4 nginx -s reload
测试:
具体过程如下:
[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 reload
[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 reload
[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 size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14868
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 14868
virtual memory (kbytes, -v) unlimited
file 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 -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14868
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
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 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]# 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 reload
测试:
登入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 reload
[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 reload
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 reload
测试:
访问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 reload
[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 reload
[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 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 restart
Stopping 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 start
Starting httpd:
[root@server1 conf]# /etc/init.d/httpd restart
Stopping 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]# 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 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]# 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 reload
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -s reload
nginx