Nginx反向代理商端口域名无法访问问题处理
上班第一天早上处理这个问题,说实在的还是第一次碰到。用域名代理商web项目,请求时候,不知为何不用域名,而是直接ip端口作为路径,导致网页崩溃无法用。
由于用nginx作为前台服务器,所以略微做了一下修改,下面为修改前和修改后的比照:
修改前:
server {
listen 80;
server_name xxx.aaaaa.com;
location / {
proxy_pass http://10.148.22.81:8180;
proxy_set_header X-Real-IP $remote_addr;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
修改后:
server {
listen 80;
server_name xxx.aaaaa.com;
location / {
proxy_pass http://10.148.22.81:8180;
proxy_read_timeout 600s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
访问成功。
当然建议对于静态资源,用例如
location ~ .*\.(gif|jpg|png|html|htm|css|js|flv|ico|swf)(.*) {
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
expires 30d;
index index.html index.htm;
}效率要好的。
主要参考原文为,很感谢这位大哥指导:
http://www.cnblogs.com/likehua/p/4056625.html
内容如下:
Nginx默认反向后的端口为80,因而存在被代理商后的端口为80的问题,这就导致访问出错。主要起因在Nginx的配置文件的host配置时没有设置响应的端口。
相关配置文件如下:
1
2
3
4
proxy_pass http://ime-server/ime-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
如上,Host配置只有host,没有对应的port,这就导致在被代理商的地方获得错误的端口。本文以java为例:
1
2
3
4
5
String scheme = httpRequest.getScheme();
String serverName = httpRequest.getServerName();
int port = httpRequest.getServerPort();
//服务请求地址
String requestURI = scheme+”://”+serverName+”:”+port+”/ime-server/rest/”+serviceName+”/wmts”;
这时,获得的port为80,尽管nginx监听的端口为9090。这个错误让我很郁闷。于是,修改nginx的配置文件,将Host后面的改为 $host:$server_port就可,配置文件如下:
1
2
3
4
5
6
7
8
location /ime-server {
#root html;
#index index.html index.htm;
proxy_pass http://ime-server/ime-server;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重启nginx,./nginx -s reload 。而后检查被代理商后的端口信息能否正确
关注我:私信回复“666”获取往期Java高级架构资料、源码、笔记、视频
Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Nginx反向代理商端口域名无法访问问题处理