利用Nginx正向代理实现受限网络的请求转发
声明:以下内容仅供学习使用,请遵守相关法律法规
一、场景描述
客户端A 需调用 目标服务器C 的接口服务,但因 目标服务器C 未将 客户端A 的IP地址加入白名单,网络不通导致直接请求失败。不过,目标服务器C 已将另一 代理服务器B 的IP地址加入其白名单中,允许其访问。鉴于 客户端A 能够请求至 代理服务器B,以下通过模拟 Nginx 配置 正向代理 实现受限网络的请求转发。
二、正向代理介绍
【百度百科】
正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
三、配置说明
- 客户端、服务器说明
名称 | IP |
---|---|
客户端A | 192.168.209.10 |
代理服务器B | 192.168.209.100 |
目标服务器C | 192.168.209.110 |
目标服务器C 部署了一个SpringBoot项目(端口8099),且已对上表中的 代理服务器B 开放了IP及8099端口,下方则是 代理服务器B 中Nginx的配置文件
- 代理服务器B的Nginx 配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name 192.168.209.100;
#请求转发到目标服务器C 8099端口
location /proxy/ {
proxy_pass http://192.168.209.110:8099/;
}
}
}
四、测试结果
客户端A 直接访问 目标服务器C 网络不通
代理服务器B 能直接访问 目标服务器C
客户端A 通过ApiPost请求 代理服务器B,结果如下图所示