Nginx实现反向代理
Salted Fish 2024/4/8 代理
# 正向代理
正向代理类似一个跳板机,代理访问外部资源。
# 原理架构图
客户端与代理服务器形成一个LAN局域网
# 作用
- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
# 反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器, 从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
# 原理架构图
说明:反向代理是代理服务器与原始服务器形成局域网,原始服务器没有暴露在外网上
# 作用
- 保证内网服务器的安全。由于原始服务器没有暴露在外网上,所以外网无法攻击服务器。
- 实现反向代理(例如:可以将代理服务器的请求分发给一个tomcat)。终极目标是实现负载均衡(分发给多个tomcat)
# nginx实现反向代理-案例-nginx代理tomcat服务器
# 目标
用户请求交给nginx(反向代理服务器),nginx将请求交给tomcat去处理,处理完成交回给nginx,nginx交给用户。tomcat是原始服务器,不暴露在外网上
| 软件 | 地址 |
|---|---|
| nginx | 192.168.150.102 |
| tomcat1 | 192.168.150.104 |
| tomcat2 | 192.168.150.106 |
# 【步骤一】:安装Tomcat(在两台机器上安装)
- 下载tomcat
curl -O -L https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz
1
- 解压
tar -zxvf apache-tomcat-9.0.87.tar.gz -C /usr/local/
1
- Tomcat环境变量全局配置
vim /etc/profile
1

- 启动Tomcat
# 【步骤二】:在两台Tomcat上创建静态页面
- 进入到tomcat下的webapps目录
/usr/local/apache-tomcat-9.0.87/webapps
1
- 创建test目录
mkdir test
1
- 在test目录创建index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to tomcat!</h1>
<a href="https://tomcat.apache.org/">https://tomcat.apache.org/</a>.<br/>
<p><em>192.168.150.106 </em></p>
<p><em>I am Zbbmeta</em></p>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
注意:不同机器上写各自IP地址,方便查看Nginx作用
# 【步骤三】:修改nginx.conf配置文件,增加代理tomcat
#新增一个代理,代理tomcat别名为test2
upstream test2{server 192.168.150.104:8080;server 192.168.150.106:8080}
server{
listen 80;
server_name localhost;
location / {
#注释掉原有的资源,以后走代理不走本地资源
index index.html index.htm;
#设置访问代理,访问test2/test目录
proxy_pass http://test2/test/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 增加代理tomcat服务器
upstream test2{server 192.168.150.104:8080 ; server 192.168.150.106:8080 ;}
1
- 代理时的负载使用
location / {
#root /data/nginx;
index index.html index.htm;
proxy_pass http://test2/test/;
}
1
2
3
4
5
2
3
4
5
- 重启nginx
cd /usr/local/nginx/sbin
# 重启nginx
./nginx -s reload
1
2
3
2
3
# 【步骤四】:测试
使用浏览器访问http://192.168.150.102/
多次刷新浏览器发现,ip地址进行变换,也就说明nginx反向代理生效