Ubuntu下Nginx安装、启动、关闭、配置详解
安装Nginx依赖库
1、安装GCC编译器
2、PCRE库
安装依赖包pcre:
sudo apt-get install libpcre3 libpcre3-dev
3、zlib库
查看zlib是否已经安装:
dpkg -l | grep zlib
安装依赖包zlib:
sudo apt-get install zlib1g-dev
4、OpenSSL开发库
安装依赖包:
sudo apt-get install openssl libssl-dev
安装Nginx
1、下载Nginx包
下载地址:http://nginx.org/en/download.html
2、解压nginx-1.20.1.tar.gz包
tar -zxvf nginx-1.20.1.tar.gz
3、进入目录nginx-1.20.1执行以下命令编译安装
./configure --with-stream
make
sudo make install
Nginx的启动与关闭
1、启动
sudo /usr/local/nginx/sbin/nginx
2、快速停止
方式一:
sudo usr/local/nginx/sbin/nginx -s stop
方式二:
ps -ef|grep nginx
kill -s SIGTERM 10800 #(10800是master进程id)
方式三:
kill -s SIGINT 10800
3、“优雅”地停止服务
方式一:
usr/local/nginx/sbin/nginx -s quit
在快速停止里会直接退出服务,而这行命令与快速停止不同的是,这种方式下停止服务会等待服务有条不紊地处理好退出前所有该处理的任务然后退出。
方式二:
kill -s SIGQUIT <nginx master pid>
也可以单独优雅地停止某个worker进程
kill -s SIGWINCH <nginx worker pid>
Nginx的配置
此处为用于聊天服务器的在运输层实现负载均衡的基于TCP的反向代理服务器的配置,通过./configure --with-stream命令安装后:
第一步:打开配置文件
cd /usr/local/nginx/conf
sudo vim nginx.conf
配置文件如下:

如图展示的是nginx服务器下的nginx.conf配置文件的内容,其中,events与http之间的stream就是进行多个聊天服务器集群配置的配置项。
其中upstream MyServer下面配置的两台server分别表示两台集群聊天服务器,6666表示这两台集群服务器监听的通信端口;server配置下面的listen是该nginx服务器的监听端口,该nginx反向代理服务器的ip和8888端口用于暴露给客户端,使客户端与之进行通信,然后nginx服务器再通过配置好的192.168.10.96:6666和192.168.10.184:6666与两台真正的聊天服务器进行通信,实际上nginx相当于一个具有任务分发功能的服务器,它会将任务通过算法分发给两个聊天服务器。
在该场景中,假设由客户端C1和C2,客户端C1、C2知道nginx服务器的ip地址为192.168.10.147,对应聊天监听端口为8888,客户端不知道真正的聊天服务器的ip地址和端口号,而nginx服务器知道真正的聊天服务器的ip地址和进程通信,分别是192.168.10.96:6666和192.168.10.184:6666,假设C1向C2发送信息,C1发送的信息首先向192.168.10.147:8888发送,当nginx服务器8888端口监听到多个客户端发来是信息时,会通过算法选择一个处理该信息的真正的聊天服务器,并通过ip和端口号将信息转发给该聊天服务器,聊天服务器接收到信息后对信息进行处理,然后返回处理结果给nginx,nginx再将信息返回,由于此处只是聊天信息,所以nginx将聊天信息再转发给C2。
nginx的业务图:

stream{
upstream MyServer{
hash $remote_addr consistent;
#server配置的是具有实际功能的集群服务器进程的ip地址和监听端口,一般非集群中,客户端直接通过这个ip和该端口进行通信,此处使用nginx反向代理,所以客户端只需要知道nginx的ip地址和监听端口
server 192.168.10.96:6666 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.10.184:6666 weight=1 max_fails=3 fail_timeout=30s;
}
#listen配置的是nginx服务器监听的端口,这个端口用于监听来自客户端的信息,该端口和该nginx的ip暴露给客户端。
server{
proxy_connect_timeout 1s;
proxy_timeout 3s;
listen 8000;
proxy_pass MyServer;
tcp_nodelay on;
}
}
Nginx对运输层进行负载均衡配置时,只需要将以上配置写到nginx.conf配置文件中就可以了,程序与Nginx之间的关系是完全解耦的。
Nginx的平滑重启和平滑升级见参考文章:http://blog.chinaunix.net/uid-16879831-id-3313181.html

浙公网安备 33010602011771号