项目场景:
即使同一台服务器,在不同网络环境下访问的IP地址不同,处于不同的网段,且不同网段之间也不能ping通互通,影响服务正常运行
问题描述
如在生产系统上遇到了一个问题,附件上传后会有下载地址和预览地址两个地址,预览插件采用第三方插件kkFileView,如果用户点击预览,那么预览地址的参数中需要带上下载地址,但是出现如下情况
原因分析:
预览地址本身的服务能正常访问,但是需要预览的文件地址和下载地址不同的是网站之间下载可以在后台绑定相对路径,而相对路径对预览服务器肯定无法下载,需要指定明确的地址,而指定的明确地址对与预览服务是不存在的
解决方案:
在不修改网络配置或者代码的情况下,采用
nginx
+iptables
实现
使用iptables建立nat,使IP能够互通:
iptables -t nat -A OUTPUT -d 192.168.0.111 -j DNAT --to-destination 10.11.0.100
iptables -t nat -A OUTPUT -d 43.*.*.39 -j DNAT --to-destination 10.11.0.100
新增nginx代理配置,实现端口转发
server {
listen 8082;
server_name 10.11.0.100;
client_max_body_size 200m;
charset utf-8;
location / {
proxy_pass http://10.11.0.100:8080/;
#proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header REMOTE-HOST $remote_addr;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
error_page 404 403 /40x.html;
location = /40x.html {
root html/403page;
}
}
}
关于我
本人长期从事互联网相关技术研发,提供技术服务、多端软件开发、信息系统集成、信息技术咨询、上位机编写等。
联系方式,QQ&WX:1304023381