背景
在一些如支付寶回調、微信小程序回調等的場景,需要內網環境能夠暴露出接口服務給第三方程序來調用。
內網穿透工具
- 花生殼(可在tplink路由器配置)
- ngrok
反向代理
nginx配置:
upstream servers_port_redirect {
server 192.168.1.171:8729 backup;
server 192.168.1.152:8026;
}
server {
listen 8729;
location ~* / {
proxy_pass http://servers_port_redirect;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
client_body_buffer_size 1128k;
proxy_connect_timeout 11190;
proxy_send_timeout 11120;
proxy_read_timeout 11120;
proxy_buffer_size 1114k;
proxy_buffers 4 1132k;
proxy_busy_buffers_size 1164k;
proxy_temp_file_write_size 1164k;
proxy_ignore_client_abort on;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
}
}
路由器的虛擬服務器映射
補充說明
後續通過更改nginx的server列表和backup負載均衡策略,以及子路由器mall的虛擬服務器配置就可以將外網ip端口映射到內網任意ip端口了(包括網線主網段192.168.1.X和子路由器子網段192.168.8.X)。
- 總體流程:交換機總路由器[ -> nginx [-> 子路由器]] -> 開發人員機器
- 前端人員A:http://192.168.1.152:8026/#/home
- 後端人員B:http://192.168.8.109:8729/
- 子路由器:http://192.168.1.171:8729
- 內網服務器248:http://192.168.1.248:8729/#/home
- 公司外網獨立ip186:http://115...186:8729/
通過域名進行內網穿透
- 80和443端口被運營商封掉了,一般的內網穿透軟件也沒用(或需要額外的服務)
- 解決方案,再加一層代理轉發:域名DNS解析 -> 公網備案服務器和獨立ip(如阿里雲ECS+專線網絡) -> 公司外網獨立ip -> 內網映射..