反向代理定义
反向代理(Reverse Proxy)是一种服务器配置,它允许一个中间服务器来接收来自客户端的请求,然后将这些请求转发到一个或多个后端服务器上。客户端通常不知道它们实际上与后端服务器进行通信,因为所有的响应都通过中间的反向代理服务器返回给客户端。
反向代理作用
隐藏服务器:反向代理可以隐藏后端服务器的细节,包括服务器的IP地址、配置和版本信息,增加了安全性。
负载均衡:反向代理可以在多个后端服务器之间分配请求,这样可以平衡负载,提高性能,并提供冗余。
缓存静态内容:反向代理可以缓存静态内容(如图片、CSS、JavaScript文件等),减少后端服务器的负载,加快响应速度。
SSL加密:反向代理可以处理SSL/TLS加密和证书管理,这样后端服务器就不需要单独处理这些任务。
压缩和优化内容:反向代理可以在将内容发送给客户端之前对其进行压缩和优化,减少带宽消耗和提高加载速度。
6.提供额外的安全层:反向代理可以提供额外的安全措施,如防火墙、DDoS攻击防护、防止跨站请求伪造(CSRF)等。
7.简化客户端配置:客户端只需要知道反向代理服务器的地址,不需要知道后端服务器的配置,简化了客户端的配置。
8.提供统一的API网关:在微服务架构中,反向代理可以作为API网关,统一处理所有对外的API请求,然后转发到不同的微服务。
操作目的
将172.20.1.178作为反向代理服务器访问到37.12.23.130靶机
Windows操作系统设置反向代理
1.软件:nginx(高性能的HTTP和反向代理服务器,也是一个通用的TCP/UDP代理服务器、邮件代理服务器和通用的反向代理)
2.配置nginx:
1)配置文件地址:conf/nginx.conf
2)配置文件内容:在文件中添加一个新的server块来设置反向代理
server {
listen 8080;
server_name 172.20.1.178;
location / {
proxy_pass http://37.12.23.130:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
listen 8080:Nginx监听8080端口。
server_name 172.20.1.178:设置为你想要作为反向代理的IP地址或域名
location / { ... } :定义了请求路径的匹配规则
proxy_pass http://37.12.23.130:8080:将请求转发到后端服务器的地址
3)测试配置:打开命令行,进入Nginx的安装目录,运行以下命令:nginx -t

出现ok字样说明配置文件未出错
4)重新加载Nginx配置:运行以下命令:nginx -s reload,使配置生效
5)验证反向代理:访问http://172.20.1.178:8080,如果能够访问到37.12.23.130服务器上的内容,则反向代理成功
6)注意:若未访问成功则可能是防火墙问题,需要在被访问服务器上添加端口的入站规则
- 打开防火墙设置,点击“高级设置”
- 点击“入站规则”,新建规则,将外部访问的端口加入防火墙的入站规则中
Linux系统设置反向代理
1.安装Nginx:
sudo apt update
sudo apt install nginx
2.配置Nginx
sudo nano /etc/nginx/sites-available/defaultes
1)配置内容:
server {
listen 8080;
server_name 172.20.1.178;
location / {
proxy_pass http://37.12.23.130:8080; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3.创建一个链接到sites-enabled目录,以便Nginx能够加载这个配置
sudo ln -s /etc/nginx/sites-available/defaultes /etc/nginx/sites-enabled/
(ln:这是Linux系统中用于创建链接的命令
-s:这是 ln 命令的一个选项,表示创建软链接(符号链接)
/etc/nginx/sites-available/defaultes:这是源文件的路径
/etc/nginx/sites-enabled/:这是目标路径)
4.检查Nginx配置
sudo nginx -t
(-t:用于告诉 Nginx 仅测试配置文件的语法是否正确,而不实际应用这些配置)
5.重新加载Nginx配置
sudo systemctl reload nginx或sudo service nginx reload
(reload 是 systemctl 的一个命令,用于重新加载服务的配置文件而不中断服务)
6.配置防火墙
sudo ufw allow 8080/tcp
7.重新加载UFW
sudo ufw reload
8.测试反向代理:访问http://172.20.1.178:8080,如果能够访问到37.12.23.130服务器上的内容,则反向代理是成功
看不懂,但知道很棒