使用Nginx的公网反向代理和内网转发服务

Published: Tags: 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; }
}