openresty开发系列2--nginx的简单安装,正向、反向代理及常用命令和信号控制介绍
一、nginx的安装下载及编译安装
1、Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/src
[root@node5 src]# wget http://nginx.org/download/nginx-1.13.0.tar.gz
tar xf nginx-1.13.0.tar.gz
cd nginx-1.13.0
./configure --prefix=/usr/local/nginx
# make && make install
2、关闭nginx
[root@node5 nginx]# ps -ef|grep nginx
root 16394 1 0 15:35 ? 00:00:00 nginx: master process ./nginx
nobody 16395 16394 0 15:35 ? 00:00:00 nginx: worker process
root 16399 1426 0 15:41 pts/0 00:00:00 grep --color=auto nginx
[root@node5 nginx]# kill -INT 16394
3、安装依赖
[root@node5 ~]# yum install -y gcc gcc-c++ ncurses-devel perl pcre pcre-devel zlib gzip zlib-devel
4、Nginx编译
$ ./configure --prefix=/usr/local/nginx
5、安装Nginx:
安装命令:make & make install
6、查看安装路径
$ cd /usr/local/nginx
$ ll
conf 存放配置文件
html 网页文件
logs 存放日志
sbin shell启动、停止等脚本
7、启动nginx
$ cd sbin
$ ./nginx
8、浏览器,访问ip地址,默认80端口
9、停止nginx
$ ps -ef | grep nginx
执行命令:$ kill –INT 进程号
$ kill -INT 3844
$ ./nginx -s stop
10、重新读取配置文件
$ nginx -s reload
11、检查配置文件是否正确
$ ./nginx -t
问题报错:[error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解决方案:
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-c的命令是指定配置文件位置
二、正向代理和反向代理概念
正向代理
用户要访问服务器C,但因为网络原因无法访问;但服务器A可以访问服务器C。这样用户可以把服务器A设置为正向代理服务器。由服务器A去请求服务器C,然后服务器A把数据返回会用户。
反向代理
用户需要访问一些服务器应用,但对方不想把服务器应用地址暴露给用户,这样可以确保安全。那用户如果访问呢?可以通过反向代理服务器,用户只需要知道反向代理服务器地址就可以,最后由反向代理服务器去访问服务器的应用
总结:正向代理与反向代理的区别
1)正向代理 是需要 在用户的电脑上 配置正向代理服务器的;而反向代理不需要,因为用户是直接访问的反向代理服务器
2)正向代理的应用场景是 用户是知道目标服务器的地址,如:www.google.com,但不能直接访问,那么就需要在用户电脑配置一个正向代理服务器,用户再次访问的地址www.google.com。
而反向代理的应用场景是 用户本来就不知道 目标服务器的地址;而是由平台方提供一个反向代理服务器的地址,用户直接访问反向代理服务器的地址就行 www.a.com
不管目标服务器有多少,用户不需要关心,只要访问反向代理服务器就ok;由反向代理服务器去解析访问目标服务器
3)反向代理 极大的保护了应用的安全性,而且此结构可以很好的搭建负载均衡
三、nginx的常用命令及信号控制
一)nginx命令
1)nginx启动
指令:nginx程序 -c nginx配置文件
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2)nginx重启
#cd /usr/local/nginx/sbin
##重启
# ./nginx -s reload
进入nginx可执行程序的目录
# cd /usr/local/nginx/sbin/
# ./nginx -s reload
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
重启是建立在nginx服务需要启动
3)nginx停止
# ./nginx -s stop
# ./nginx -s quit
quit 是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求
stop 是快速关闭,不管有没有正在处理的请求。
4)重新打开日志
# ./nginx -s reopen
5)nginx检查配置文件
检查配置文件是否正确
第一种
进入nginx可执行程序的目录
# cd /usr/local/nginx/sbin/
# ./nginx -t
第二种
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
二)nginx的信号控制
Nginx支持2种进程模型Single和Master-Worker
Single是单进程,一般不适用,
Master-Worker是主进程和工作进程模型运行,主进程对工作进程管理。
Nginx允许我们通过信号来控制主进程,用信号的方式可以达到不影响现有连接的目的。
信号类型
INT,TERM 快速关闭信号
QUIT 从容关闭信号
HUP 从容重启信号,一般用于修改配置文件后,重启
USR1 重读日志,一般用于日志的切割
USR2 平滑升级信号
WINCH 从容关闭旧进程
具体语法:
kill -信号选项 nginx的主进程号
例:
# kill -INT 26661
# kill -HUP 4873
1)nginx停止
# ps -ef | grep nginx 获得进程号
第1种从容“优雅”停止
# kill -QUIT master进程号
# Nginx服务可以正常地处理完当前所有请求再停止服务
# 步骤:首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
第2种快速停止
# kill -TERM master进程号
# kill -INT master进程号
# 快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。
第3种强制停止
# pkill -9 nginx
# 系统强杀nginx进程
2)重启nginx
# kill -HUP master进程号
已经介绍了,QUIT,INT,TERM,HUP的信号
下几节课程会详细介绍USR1,USR2,WINCH信号。这里先埋下一个点,先了解下