需求:用Nginx代理tomcat,且代理配置用热部署方式
原有Nginx环境:
nginx:192.168.10.100:80
tomcat:192.168.10.101:8080
[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
http://192.168.10.100/
热部署:
[root@localhost ~]# ps -ef | grep nginx
修改nginx.conf配置文件,设置对tomcat的代理
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf location{}添加如下内容:
http{
......
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://192.168.10.101:8080;
# index index.html index.htm;
}
......
}
由于还没有给Nginx进行热部署,现在访问http://192.168.10.100/还是原来的Nginx页面
http://192.168.10.100/
[root@localhost ~]# kill -s SIGUSR2 2282
[root@localhost ~]# ps -ef | grep nginx
给master进程发送SIGUSR2信号,让Nginx平滑升级可执行程序。可以看到Nginx重新启动了一组master进程和worker进程,而新master进程是旧master进程的子进程(通过父子进程的继承关系,新master进程可以很方便地继承旧master进程的相关资源)
且在nginx的pid目录中存储了一份新的pid文件(保存了新旧master进程的ID)
[root@localhost ~]# ls /var/run/ | grep nginx
给旧master进程发送SIGWINCH信号,让旧master进程关闭旧worker进程
[root@localhost ~]# kill -s SIGWINCH 2282
[root@localhost ~]# ps -ef | grep nginx
此时访问http://192.168.10.100/,被代理为tomcat,且实现了Nginx不停机配置