Nginx反向代理商端口域名无法访问问题处理

作者 : 开心源码 本文共1988个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共136人阅读

上班第一天早上处理这个问题,说实在的还是第一次碰到。用域名代理商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反向代理商端口域名无法访问问题处理

发表回复