什么是Nginx
Nginx
是一个高性能的Http
和反向代理Web
服务器,同时也提供了IMAP/POP3/SMTP
服务,由俄罗斯的程序设计师Igor Sysoev所开发,官方测试单个Nginx
能够支支撑5万并发链接。并且cpu、内存等资源消耗却非常低,运行非常稳定。
如何在Linux下安装Nginx
下载
Nginx
- Nginx官方地址:http://nginx.org/en/download.html
Nginx官网提供三种版本:
Mainline version
:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版Stable version
:最新稳定版,生产环境上建议使用的版本Legacy versions
:遗留的老版本的稳定版
- 目前推荐使用稳定版本
安装要求的环境
GCC
环境yum install gcc-c--
第三方的开发包
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
zlib 库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装过程
- 把nginx源码包上传到linux系统上
解压到/usr/local下面
# 解压命令 tar -xvf nginx-1.18.0.tar.gz -C /usr/local
进入nginx目录
cd nginx-1.18.0
配置Nginx编译时指定程序存放路径
./configure --prefix=/usr/local/nginx
编译安装
make # make执行完成之后 make install
测试是否安装成功
# 切换到nginx目录 cd /usr/loca/nginx/ # 检测nginx配置文件是否正确 ./sbin/nginx -t
正常输出
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
启动Nginx
# 切换到usr/local/nginx/sbin目录 cd /usr/local/nginx/sbin # 启动nginx ./nginx
配置Nginx开机自启动(这里用的是Centos7.x)
cd /lib/systemd/system/ # 创建配置文件 vim nginx.service # 输入文件内容 [Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target # 退出并保存文件 # 加入开启启动 systemctl enable nginx # 如果不想要启动了就用下面这条命令关掉 systemctl disable nginx
Nginx配置说明
配置模块
- nginx的配置(conf/nginx.conf)主要有:全局参数、events、http这三大块组成。
- 系统配置:server,可以配置多个server
- 转发规则:location路径、root目录、index欢迎页面
- 反向代理规则:location拦截路径、proxy_pass转向地址、index
配置多端口访问不同的目录
在配置中增加
server { listen 81; # 可根据域名不同来区分,但是端口需要改成80,这样访问域名就不会带端口后缀了 server_name www.xunliji.cn; root /var/www/web1/; location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/web1/; } }
以上配置根据自己需要更改端口号和目录路径,增加配置后记得重启
nginx 请求转发配置 (反向代理)
当用户访问 http://localhost:80,nginx 将这个请求什么也不做,只负责转发到 tomcat 的访问地址 http://localhost:8080。server { listen 80; server_name localhost; location / { #拦截所有的资源 proxy_pass http://127.0.0.1:8080; #转向tomcat的地址 } }
nginx负载均衡
http{ .... upstream server_pool{ server 192.168.5.21; server 192.168.5.22; } server { listen 80; server_name www.xunliji.cn; location / { proxy_pass http://server_pool } } .... }
- 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
weight代表权重默认为1,权重越高被分配的客户端越多指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream server_pool{ server 192.168.5.21 weight=10; server 192.168.5.22 weight=10; }
ip_hash: 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如:
upstream server_pool{ ip_hash; server 192.168.5.21:80; server 192.168.5.22:80; }
fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{ server 192.168.5.21:80; server 192.168.5.22:80; fair; }
Nginx 常用命令
- 启动nginx `./sbin/nginx`
- 停止nginx `./sbin/nginx -s stop` 或 `./sbin/nginx -s quit`
- 重载配置 `./sbin/nginx -s reload`
- 重载指定配置文件 `./sbin/nginx -c /usr/local/nginx/conf/nginx.conf`
- 查看nginx版本 `./sbin/nginx -v`
- 检查配置文件是否正确 `./sbin/nginx -t`
- 显示帮助信息 `./sbin/nginx -h`