Nginx服务器 和apache服务器是同样的功能都是发布网页web的但是不同的是功能上有些不同各有各的好处。
Nginx服务器
开始安装
确认包安装
yum install pcre-devel openssl-devel -y
useradd nginx 添加nginx用户
在这里必须要有nginx用户没有就现创建
解压nginx-0.8.55.tar.gz包 是源包
Tar –zxvf nginx-0.8.55.tar.gz –C /usr/local/src/
./configure --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make && make install 编译安装
cd /usr/local/nginx/sbin/ 编译安装成的软件默认的位置
./nginx 执行 启动
./nginx -s stop 停用
端口是80端口 如果启动失败 先把httpd STOP
查看是否启动成功
netstat -anplt |grep :80
---------------------
--with-http_stub_status_module 启用status网页(模块能够获取Nginx自上次启动以来的工作状态)
--with-http_ssl_module 支持ssl模块
---------------------
启动
/usr/local/nginx/sbin/nginx -h 查看命令帮助
-v查看nginx版本
-V查看编译参数
-t测试默认配置文件
-c 加载非默认位置配置文件
/usr/local/nginx/sbin/nginx 启动
elinks -dump http://127.0.0.1 测试连接
停止
Nginx的停止 一般通过发送信号给nginx主进程的方式来停止nginx
Ps –ef |grep nginx
1个nginx进程备注信息为”master process” 表示为主进程
另外进程备注信息为”worker process”,表示为子进程
信号
TERM, INT 快速关闭 ( 不管你在干嘛直接关闭)
QUIT 从容关闭
HUP 重载配置用新的配置开始新的工作进程从容关闭旧的工作进程
USR1 重新打开日志文件
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程
---------------------
(1)从容停止nginx
Kill –信号
Kill – QUIT nginx主进程号
或者
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
(2)
Kill –TERM nginx主进程号
或
Kill –INT Nginx
(3)
Kill -9 nginx主进程号
Nginx平滑重启
kill -HUP nginx主进程号
--------------------------------
当nginx接收到HUP信号时,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则就是用默认的),如果成功,就应用新的配置文件(例如,重新打开日志文件或者监听的套接字).之后nginx运行新的工作进程并从容关闭旧的工作进程.所有客户端的服务完成后,旧的工作进程被关闭.如果新的配置文件应用失败,nginx将继续使用旧的配置进行工作
Nignx的平滑升级
当需要将正在运行中的nginx升级,添加/删除服务模块时,可以在不中断服务的情况下,使用新版本,重编译的Nginx可执行程序替换旧版本的可执行程序,步骤如下:
(1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx,可以将新版本编译安装到旧版本的nginx安装路径中.替换之前,最好备份一下旧的可执行程序
(2) 发送以下指令:
Kill –USR2 旧版本的nginx主进程号
(3) 旧版本的主进程将重命名它的pid文件为.oldbin (例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程.
(4) 此时,新,旧版本的nginx实例会同时运行,共同处理输入的请求.要逐步停止旧版本的nginx实例,你必须发送WINCH信号给旧的主进程,然后,它的工作进程就将开始从容关闭:kill –WINCH 旧版本的Nginx主进程号
(5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了.
(6) 这时候,我们可以决定是使用新版本,还是回复到旧的版本;
Kill –HUP 旧的主进程号:Nginx将在不重载配置文件的情况下启动它的工作进程;
Kill –QUIT 新的主进程号:从容关闭其他工作进程(woker process);
Kill –TERM 新的主进程号:强制退出;
Kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号.
新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为他的.pid文件,这样,一切就都恢复到升级之前了,如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行:
-------------------------------------------
升级版本
你可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。
tar -xvf nginx-1.0.9.tar.gz -C /usr/local/src/
cd nginx-1.0.9/
./configure --prefix=/usr/local/nginx109 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx
安装新版本nginx放在nginx109目录
make && make install
cd /usr/local/nginx/sbin
./nginx
mv nginx nginx.bak
cd /usr/local/nginx109/sbin
cp nginx /usr/local/nginx/sbin/ 把新的复制到旧的里面新的名字叫nginx 旧的叫nginx.bak
./nginx -v 查看版本
kill -USR2 16878 更新程序命令 现在会出现4个进程 一个新的 一个旧的
kill -WINCH 16878 给主进程发命令 主进程就会把子进程从容关闭
kill -QUIT 16878 在把旧的主进程关掉 就剩下新的 完成替换
ps -ef | grep nginx 查看旧的进程主进程号和工作进程号
cat /usr/local/nginx/logs/nginx.pid 查看当前nginx状态
[root@xu sbin]# ls
nginx nginxa
[root@xu sbin]# mv nginx nginx.bak 先把新进程该名字
[root@xu sbin]# mv nginxa nginx
[root@xu sbin]# ./nginx
[root@xu sbin]# kill -USR2 29210
[root@xu sbin]# ./nginx
[root@xu sbin]# ./nginx
[root@xu sbin]# mv nginx nginx.a
[root@xu sbin]# mv nginx.bak nginx
[root@xu sbin]# kill -USR2 29255
[root@xu sbin]# kill -WINCH 29255
[root@xu sbin]#
---------------------------------------
在升级版本过程中 恢复原来的旧版本
tar -xvf nginx-1.0.9.tar.gz -C /usr/local/src/
cd nginx-1.0.9/
./configure --prefix=/usr/local/nginx109 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx
安装新版本nginx放在nginx109目录
make && make install
cd /usr/local/nginx/sbin
./nginx
mv nginx nginx.bak
cd /usr/local/nginx109/sbin
cp nginx /usr/local/nginx/sbin/ 把新的复制到旧的里面新的名字叫nginx 旧的叫nginx.bak
kill -USR2 16878 更新程序命令 现在会出现4个进程 一个新的 一个旧的
kill -WINCH 16878 给主进程发命令 主进程就会把子进程从容关闭
kill -HUP 16878 把旧的子进程重新开启
kill -quit 28240 然后把新的主进程带子进程一起kill掉
-------------------------------------------------------
虚拟主机:
祝你主机共分为三种:基于ip的虚拟主机,基于端口的虚拟主机和基于名称的虚拟主机.前两种由于受到成本和客户使用习惯的限制,相对使用的没有基于名称的虚拟主机多
支持什么类型的文件
vim /usr/local/nginx/conf/ mime.conf
配置文件
vim /usr/local/nginx/conf/ nginx.conf
基于域名的虚拟主机:
server {
listen 8080; 监听端口
server_name www.server1.com; 名字
location / {
root server1; 访问的目录
index index.html index.htm; 搜索的文件
}
}
server {
listen 8080;
server_name www.server2.com;
location / {
root server2;
index index.html index.htm;
}
}
mkdir /usr/local/nginx/server1 创建对应文件夹
mkdir /usr/local/nginx/server2
echo server1 >> /usr/local/nginx/server1/index.html 填写内容
echo server2 >> /usr/local/nginx/server2/index.html
vim /etc/hosts
192.168.1.113 www.server1.com
192.168.1.113 www.server2.com
基于IP的虚拟主机:
server {
listen 192.168.1.113:8080;
location / {
root server1;
index index.html index.htm;
}
}
server {
listen 10.10.10.113:8080;
location / {
root server2;
index index.html index.htm;
}
}
ifconfig eth0:0 10.10.10.113/24
vim /etc/hosts
192.168.1.113 www.server1.com
10.10.10.113 www.server2.com
基于端口的虚拟主机:
server{
listen 8080;
root 8080.com;
}
server{
listen 8090;
root 8090.com;
}
------------------------------------------------
访问控制
server {
listen 192.168.1.113:8080;
location / {
root server1;
index index.html index.htm;
allow 192.168.1.113;
deny 10.10.10.113;
}
}
访问控制
location / {
root html;
index index.html index.htm;
auth_basic "xxxx"; 验证标题
auth_basic_user_file /usr/local/nginx/passwd.db;
}
htpasswd -c /usr/local/nginx/passwd.db testuser
--------------------------
rewrite功能 重写
rewrite /(.*)\.php$ /$1.html break;
cd /usr/local/nginx/server1/
touch aa.html
访问的时候
192.168.1.113/aa.php
(.*)任意字符长度
.php$ 以php结尾
$1引用前边的(.*)
任意请求php结尾的网页转到html网页 然后跳出
--------------------------------------------------------
if ( !-f $request_filename) { 如果请求的文件不存在则执行以下操作
rewrite ^/(.*)$ /aa.html last; 任意不存在的网页请求装给test.html网页 last 继续替换
}
---------------------------------
https的安全连接
安全连接https
首先生成一对证书
RHEL5 中在/etc/pki/tls/certs 目录有个脚本可以帮助我们简化证书生成的过程,所以我们首先切换到此目录
cd /etc/pki/tls/certs
make server.key
生成私钥
openssl rsa -in server.key -out server.key
去除密码以便使用时不询问密码
make server.csr 证书的名字要和前面钥匙的名字一制
生成证书颁发机构,用于颂发证书
有效期 出去的文件
openssl x509 -in server.csr -req -signkey server.key -days 365 -out server.crt
颁发证书
修改配置文件指定证书和私钥
ssl_certificate/etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
--------------------------------------
vim /usr/local/nginx/conf/nginx.conf
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;5分钟断开连接
ssl_protocols SSLv2 SSLv3 TLSv1;支持的协议 安全连接
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2
:+EXP;支持的算法
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
}
---------------------------------------------
通过网页查看状态
vim /usr/local/nginx/conf/nginx.conf
50 # redirect server error pages to the static page /50x.html
51 #
52 error_page 500 502 503 504 /50x.html;
53 location /nginx_status {
54 stub_status on;
55 access_log off;
56 allow 192.168.1.21;
57 deny all;
58 }
59 location = /50x.html {
60 root html;
61 }
62 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
显示内容
Active connections: 1 对后端发起的活动连接数
server accepts handled requests
1 1 1
nginx 总共处理了1个连接, 成功创建1次握手 (证明中间没有失败的), 总共处理了 1个请求
Reading: 0 Writing: 1 Waiting: 0
reading -- nginx 读取到客户端的Header信息数
writing -- nginx 返回给客户端的Header信息数
waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接
转载于:https://blog.51cto.com/historys/1296687