反向代理定义

反向代理(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服务器上的内容,则反向代理是成功

Avatar photo

Sebastian

《记一次反向代理实践》有一个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注