nginx的部署(一)
- 1 为什么使用Nginx
- 2 nginx的部署
- 3 nginx的启动
- 4 nginx的并发优化
- 5 负载均衡
- 6 nginx的服务脚本
1 为什么使用Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
- Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡服务器。在性能上,Nginx占用很少的系统资源,能支持更多的并发连接,达到更高的访问效率;在功能上,Nginx是优秀的代理服务器和负载均衡服务器;在安装配置上,Nginx安装简单、配置灵活。
- Nginx支持热部署,启动速度特别快,还可以在不间断服务的情况下对软件版本或配置进行升级,即使运行数月也无需重新启动。
2 nginx的部署
下载nginx安装包,解压:tar zxf nginx-1.8.1.tar.gz
(1)配置
- 切换到nginx的目录:
cd nginx-1.8.1/
- 查看编译所需的参数:
./configure --help
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module
##--prefix:指定编译后程序存放的路径
##--with-http_ssl_module:加密模块
##--with-threads:启用thread pool支持
##--with-file-aio:启用file aio支持
##--with-http_sub_module:启用ngx_http_sub_module支持,允许用一些其他文本替换nginx响应中的一些文本
- 编译环境gcc g++ 开发,需要安装相应的库:
yum install gcc -y
- 根据错误提示解决依赖性:
yum install pcre-devel -y
- 根据错误提示解决依赖性:
yum install openssl-devel -y
- 直至执行成功即可
(2)编译:make
(3)安装:make install
- 查看文件占用空间的大小:
du -sh /usr/local/nginx/
-
vim auto/cc/gcc
:注释掉这行,去掉 debug 模式编译,编译以后程序只有几百 k
- 删除nginx程序:
rm -rf /usr/local/nginx/
-
make clean
:清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件
重新安装nginx
- 配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module
- 编译:
make
- 安装:
make install
3 nginx的启动
vim /root/.bash_profile :指定存放nginx的目录加入环境变量
source /root/.bash_profile:立即生效
nginx:启动nginx
- 确保80端口没有被其他进程占用,否则nginx将无法启动
- 真机测试: curl 172.25.12.1
4 nginx的并发优化
- 编辑nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
worker_processes auto ##自动绑定cpu的个数
worker_connections 65535 ##单个工作进程并发连接数
nginx作为http服务器时: max_clients = worker_processes * worker_connections
nginx作为反向代理服务器时:max_clients = worker_processes * worker_connections / 2
- 查看进程:
ps ax
- 创建nginx用户:
useradd -M -d /usr/local/nginx/ -s /sbin/nologin nginx
- 编辑nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
- 重新加载nginx:
nginx -s reload
- 修改用户进程可打开文件数限制,编辑linux资源限制配置文件:
vim /etc/security/limits.conf
,nginx用户能打开文件描述符数量是65535
5 负载均衡
(1) 反向代理服务器组
编辑nginx的配置文件:vim /usr/local/nginx/conf/nginx.conf
http {
upstream westos { //配置反向代理服务器组,westos是服务器组的名称
server 172.25.12.2:80; //westos组中服务器IP或域名,端口80
server 172.25.12.3:80;
}
include mime.types;
default_type application/octet-stream;
....
....
server {
listen 80;
server_name www.westos.org; // 域名地址
location / {
proxy_pass http://westos; //表示将所有请求转发到westos服务器组中配置的某一台服务器上
}
}
- 重新加载nginx:
nginx -s reload
- 编辑测试主机的dns解析文件:
/etc/hosts
- 测试:
(2) backup和weight
- 编辑nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
http {
upstream westos {
server 172.25.12.2:80 weight=2; ##weight分配策略,server2的权重为2/3
server 172.25.12.3:80;
server 127.0.0.1 backup; ##如果负载均衡的两台服务器均宕机,则访问本机
}
...
- 重新加载nginx:
nginx -s reload
- 测试
- 模拟server2和server3均宕机:
systemctl stop httpd
没有backup参数时,访问将出错
有server 127.0.0.1 backup参数时,访问本机
(3) ip_hash算法
- ip_hash算法:Nginx中的ip_hash技术能够将某个ip
的请求定向到同一台后端web机器中,这样一来这个ip下的客户端和某个后端 web机器就能建立起稳固的session - 编辑nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
- 重新加载nginx:
nginx -s reload
- 测试
- 只有当server3宕机时,server2提供服务
6 nginx的服务脚本
- 编写nginx的服务脚本
nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
nginx -s stop ##停止nginx服务
mv nginx.service /etc/systemd/system ##systemctl管理的服务脚本存放的位置
systemctl daemon-reload ##使新服务的服务程序配置文件生效
systemctl start nginx.service ##开启nginx服务
systemctl status nginx.service ##查看nginx的状态