使用Nginx的公网反向代理和内网转发服务
笔者最近有个内网的服务需要对外,但是加载请求的素材和API接口等却在内网不同的机器上。 由于不想逐一把相关的服务映射在路由器的端口上,所以找了台内网的服务器统一进行转发。
# 本地端口转发 #
server {
listen 8080 ssl http2;
#server_name intranet.example.com;
root /dev/null; auth_basic "";
auth_basic_user_file /etc/nginx/auth_basic;
ssl_certificate "/data/certificate/nginx.crt";
ssl_certificate_key "/data/certificate/nginx.key";
location ~ ^/(172\.17\.196\.[0-9:]+)/(.*)$
{ proxy_pass http://$1/$2; }
}
笔者的路由器是有公网IP地址的,但众所周知80和443两个端口是被运营商屏蔽了的。 再加上有时直连公网IP出口速度一般,所以笔者又加了一台腾讯云的服务器反向代理。
# 公网反向代理 #
server {
listen 443 ssl http2;
server_name intranet.example.com;
root /dev/null; auth_basic "";
#auth_basic_user_file /etc/nginx/auth_basic;
ssl_certificate "/data/certificate/nginx.crt";
ssl_certificate_key "/data/certificate/nginx.key";
resolver 119.29.29.29 valid=60s ipv6=off;
set $ddns_example_com "ddns.example.com";
location ~ ^/(172\.17\.196\.[0-9:]+)/(.*)$
{ proxy_pass https://$ddns_example_com:8080/$1/$2; }
}