关于Nginx中各种配置的实现
1 配置文件
- nginx配置文件的路径:”/usr/local/nginx/conf/nginx.conf”
1.1 配置文件组成部分
- (1)全局块
- nginx配置文件的一些全局配置
1 | work_process 1; |
- (2)event块
- 主要影响nginx服务器与用户的网络连接
1 | worker_connections 1024; |
- (3)http块
- nginx配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块都在此配置
- http块可以细分为http全局块、server块
- http块存在多个Server块
- (4)http全局块
- (5)server块
- 此块与虚拟主机有密切关系,为了节省互联网服务硬件成本
- server块可以细分为全局server块、location块
- server块存在多个location块
- (6)全局server块
1 | listen 80; |
- (7)location块
- 配置请求转发
2 反向代理配置
2.1 tomcat安装配置
- (1)Tomcat下载
- tomcat下载地址:https://tomcat.apache.org/download-10.cgi
- 下载tar.gz后缀名文件
(2)解压
1
tar -zxvf 文件名
(3)启动
1
2# 切换目录到tomcat的bin目录下
./startup.sh
2.2 配置实例1
目标:访问指定ip地址,自动转发到tomcat服务中
- (1)nginx请求转发配置
- 配置location块,来实现请求转发
1
2
3
4
5
6
7
8
9
10
11
12
13server {
# 端口号
listen 80;
# 服务名称
server_name 192.168.85.130;
# 请求转发地址
location / {
root html;
proxy_pass http://127.0.0.1:8080/;
index index.html index.htm;
}
}
- (2)测试效果
- 修改完nginx后,需要重启nginx
- 浏览器输入:http://服务名称:端口号/转发地址
2.3 配置实例2
目标:根据访问地址的不同,转发到不同的tomcat服务器中
- (1)准备多一个tomcat服务
- 复制tomcat文件夹
- 修改/conf/server.xml中的端口号
- (2)准备一些静态文件,好进行两端口区分
- 8080端口在/webapps创建文件夹/edu
- 8081端口在/webapps创建文件夹/cov
- 在两文件夹下放入a.html,内容如下文
1
<h1>here is 8080/8081!</h1>
- (3)nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
# 端口号
listen 8001;
# 服务名称
server_name 192.168.85.130;
# 转发路径(正则匹配)
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
# 转发路径2(正则匹配)
location ~ /cov/ {
proxy_pass http://127.0.0.1:8081;
}
}
- (4)防火墙开放8001端口
1
2
3
4
5# 添加8001端口
firewall-cmd --add-port=8001/tcp --permanent
# 重载防火墙
firewall-cmd --reload
- (5)测试效果
- 事先启动tomcat8080、tomcat8081、nginx三个服务
- 分别访问两个tomcat的静态资源a.html
2.4 补充说明
1 | location [ = | ~ | ~* | ^~] uri { |
3 负载均衡
3.1 配置步骤
- (1)准备一个相同的服务
- 继上面的反向代理,在tomcat8081的/webapps在创建edu目录,并创建文件a.html,内容如下
1
<h1>here is 8081!</h1>
- (2)nginx配置
- 在http块中进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 负载均衡的服务器(名字自定义)
upstream www.balance.com {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
# 端口号
listen 8002;
# 服务名
server_name 192.168.85.130;
# 转发路径(路径为上面负载均衡的服务器名)
location ~ /edu/ {
proxy_pass http://www.balance.com;
}
}
- (3)防火墙开放8002端口
1
2
3
4
5# 添加8001端口
firewall-cmd --add-port=8002/tcp --permanent
# 重载防火墙
firewall-cmd --reload
- (4)测试效果
- 记得重新启动tomcat8081和nginx
- 输入地址后,每次刷新都会切换到不同的tomcat服务(默认轮询算法)
3.2 补充说明
- Nginx分配策略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 不做任何配置,默认使用轮询:每个请求一个接一个平均分配到不同的服务器中
# 权重策略:权重越高,分配给该服务器的请求数越多
upstream www.balance.com {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
# ip_hash:根据请求ip的hash值进行服务器分配,每个访客的固定在一台服务器,解决session问题
upstream www.balance.com {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
# fair(公平):根据后端服务器的响应时间来分配,响应时间越短的服务器优先分配请求
upstream www.balance.com {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair;
}
4 动静分离
4.1 介绍
- 动静分离:即将动态资源和静态资源部署在不同的服务器中
- 动态资源:一般指与数据库交互得到的数据
- 静态资源:一般指前端文件,即html、css、js等
- 实现思路:通过请求的后缀名不同,来区分动态/静态资源。通过expires参数,设置浏览器缓存,减少服务器请求。如果在指定缓存日期内请求,则会直接发送304状态码,让用户从自家浏览器缓存获取资源(前提服务器最后更新时间与浏览器缓存资源的最后更新时间一致,否则还是会从服务器下载资源)
4.2 配置实例
- (1)准备静态资源
- 准备一个图片和html文件
- (2)nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 若出现访问403,则需要此设置
user root;
http {
server {
# 端口号
listen 8003;
# 服务名
server_name 192.168.85.130;
# 请求转发(正则过滤静态资源)
location ~ .*\.(jpg|html)$ {
# 资源存放路径
root /home/letere/nginx_learn/static/;
# 资源缓存时间
expires 7d;
}
}
}
- (3)防火墙开放8003端口
1
2
3
4
5# 添加8003端口
firewall-cmd --add-port=8002/tcp --permanent
# 重载防火墙
firewall-cmd --reload
- (4)测试效果
5 Nginx高可用集群
5.1 keepalived安装
- 指令:
yum -y install keepalived
- keepalived配置文件路径:/etc/keepalived
5.2 keepalived配置
1 | # 脚本配置 |