Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
专为性能优化而开发,支持5万个并发连接数。
正向代理: 在浏览器端进行配置,然后访问目标端的方式。经过代理服务器然后访问目标端,访问端口为目标端实际端口号。 反向代理: 不需要在浏览器端(客户端)进行任何配置,经过反向代理服务器访问目标端的方式。注:配置信息在反向代理服务器中,对外暴露端口非目标端实际端口号。 负载均衡: 客户端发送多个请求到服务器,由代理服务端对请求进行分发,分发到不同的服务器上。 动静分离: 将动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力。静态资源 :html、css、js 动态资源 :jsp、servlet
Nginx安装
yum安装:
yum install -y nginx
安装包安装(推荐):
- 安装依赖:pcre-8.37.tar.gz、openssl-1.0.1t.tar.gz、zlib-1.2.8.tar.gz、gcc-c++-4.8.5-4.tar.gz
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
- 下载nginx
nginx下载路径:http://nginx.org/en/download.html - 安装nginx
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure
make && make install
./nginx -v
- 端口设置
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd -add-service=http --permanent
Sodu firewall-cmd –add-port=80/tcp –permanent
重启防火墙
firewall-cmd –reload
Nginx基础命令
进入nginx的目录中执行命令 1.查看版本
./nginx –v
2.启动nginx
./nginx
3.关闭nginx
./nginx –s stop
4.重新加载
./nginx –s reload
Nginx配置文件
位置:/usr/local/nginx/conf/nginx.conf或/etc/nginx/nginx.conf 配置文件组成(三部分)
- 全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置命令。
worker_processes 1; 值越大,可支持的并发处理量也越多。
- events块
涉及的指令主要影响nginx服务器与用户的网络连接
events {
worker_connections 1024;
}
- http块
Nginx配置实例
一、反向代理
配置一个tomcat环境
- 在host文件中添加内容
Windows:C:\Windows\System32\drivers\etc\hosts Linux:/etc/hosts
192.168.10.10 www.nginx.com
- 在nginx.conf修改http块下的server块下的全局server中。
listen 80;
server_name localhost; # localhost改为代理IP – 192.168.10.10
location / {
proxy_pass http://127.0.0.1:8080; # 添加目标服务器网址
root html;
index index.html index.htm;
}
- 测试
浏览器访问www.nginx.com,跳转到http://127.0.0.1:8080 切记端口一定要放开,我已然放了这个错误,嘿嘿。
二、反向代理(2)
- 准备
两个tomcat,一个8080,一个8081端口。 两个tomcat下分别建不同的页面,以便测试。 通过不同的地址,访问不同的tomcat。 监听9001,然后到不同的页面中去。 - 配置nginx.conf
在nginx.conf修改http块下的server块下的全局server中。
listen 9001; # 监听端口
server_name localhost; # localhost改为代理IP – 192.168.10.10
# 下面采用正则表达式写法
location ~ /edu/ {
proxy_pass http://www.nginx.com:8080;
}
location ~ /vod/ {
proxy_pass http://www.nginx.com:8081;
}
- 测试
- 补充
格式:
location [=|~|~*|^~] {
...
}
a) = 用于不含正则表达式的url前,要求请求字符串与url严格匹配。 b) ~ 用于表示url包含正则表达式,且区分大小写。 c) ~*用于表示url包含正则表达式,且不区分大小写。 d) ^~用于包含正则表达式的url前,要求nginx服务器找到标识url和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则url和请求字符串作匹配。
三、负载均衡
- 准备两个服务。
- 配置nginx.conf
在nginx.conf修改http块下的server块下的全局server中。
http {
……
upstream myserver{
ip_hash;
server 192.168.20.21:8080 weight=1;
server 192.168.20.22:8081 weight=1;
#fair; # 此行注释,只表明格式
}
……
server {
location / {
listen
server_name
proxy_pass http://myserver;
proxy_connect_timeout 10;
}
}
}
- 策略(参考2的格式)
a) 轮询(默认) b) Weight(权重,默认值1,值越高,分配的用户越多) c) Ip_hash(同访问下,第一次访问某个IP,之后便一直访问某个IP) d) fair(根据后端服务器的响应时间来分配,响应短的优先分配)
四、动静分离
- 什么是动静分离
把动态请求和静态请求分离开来。 a) 纯粹把静态文件独立成单独的域名,放在独立的服务器上。 b) 把动态和静态文件混合在一起发布,通过nginx来分开。
- 准备
在系统中准备一些静态资源 - 配置nginx.conf
listen 90; # 修改端口
server_name 192.168.20.29; # 改为代理IP
# 下面采用正则表达式写法
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on;
}
- 测试
访问192.168.17.129/image/a.jgp 访问192.168.17.129/www/a.html 另有参数,还需补充
五、高可用集群
- 准备
需要两台服务器192.168.17.129和192.168.17.131 分别安装nginx 在两台服务器安装keepalived 可以使用压缩包解压缩安装:
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
yum install -yopensslopenssl-devel
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
make && make install
也可以使用yum命令直接安装(此次使用):
yum install keepalived -y
- 配置keepalived.conf文件
/etc/keepalived/keepalived.conf 需要在两台nginx服务器上都安装keepalived,文件内容配置Keepalived - 启动主从服务器
启动nginx:./nginx 启动keepalived:systemctl start keepalived - 访问测试
两台同启测试,一台故障测试。
六、Nginx并发计算
最大并发数计算: 静态访问 :每个worker的最大连接数*worker数/2 反向代理 :每个worker的最大连接数*worker数/4
|