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 。然后检查被代理后的端口信息是否正确:

时间: 2024-10-24 19:15:53

Nginx反向代理端口域名无法访问问题解决的相关文章

nginx反向代理+tomcat域名绑定

今天在用nginx做反向代理时,由于一个tomcat下有多个应用,因此要在tomcat做域名绑定.tomcat启动后,通过域名+端口是可以访问到页面的,但是通过nginx转发后就不能访问了,因此tomcat配置是没有问题的. 然后看nginx配置文件,其中转发部分 server { listen 80; server_name 2018.cctvtzqc.com; location / { proxy_pass http://192.168.0.3:8080; } } 过于简单,还需要讲请求头一

nginx反向代理- b域名访问a域名

server { listen 80; server_name A.com; location /{ proxy_pass https://B.com/asi/; } location ^~/web/ { proxy_pass https://B.com/web/; } } 原文地址:https://www.cnblogs.com/todarcy/p/12603347.html

nginx监听端口和反向代理端口的权限问题

Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听.为叙述方便我们称之为受控端口. nginx监听端口 要查看当前有哪些受控端口可执行: # semanage port -l | grep '^http_port_t' http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 这里显示了八个端口号,其中包括80端口.由于nginx默认在80端口监听因此启动正常. # s

nginx反向代理取得IP地址

nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中. nginx反向代理配置时,一般会添加下面的配置: proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header REMOTE-HOST $remote_

FastDFS + Nginx 反向代理缓存 安装与配置

FastDFS + Nginx 反向代理缓存 安装与配置 作者:斯巴达克斯 时间:March 26, 2015 分类:存储 操作系统 CentOS release 6.5 (Final) 64 nginx相关软件 nginx-1.4.7 下载地址: http://nginx.org/en/download.html#nginx清除缓存模块 ngx_cache_purge-2.1 http://labs.frickle.com/nginx_ngx_cache_purge/pcre-8.36 ftp

Cento7+Nginx反向代理实现多域名跳转

近期比较忙,所以很少写文档了,最近有个项目组有多个环境需要做映射,所以就想到了通过Nginx反向代理实现多域名地址跳转,以致就总结了一下,其实说到代理我们大家都知道.最常见最常说的所谓的就是NAT,就是将内部多个地址请求通过代理转达到外部.这个就叫正向代理,那什么是反向代理呢-就是和正向代理相反:所以很好理解,Nginx反向代理功能很强大,可以通过一个nginx代理实现多个域名及不同的端口进行代理转发,所以在日常的运维中很有帮助.我们今天的演示是通过Nginx反向代理实现内部不同的多个域名转发.

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10

nginx反向代理有关端口的问题

今天在做nginx反向代理的时候,出现了一个问题:我们外网访问端口设置的是8088,但是因为外网访问默认端口是80,所以当页面发生重定向的时候,会出现页面访问不到的问题,. 尝试很多办法之后,终于得到了解决,特意分享出来,希望可以帮到有需要的朋友. server { listen 内网端口; server_name 域名a; if ( $content_type ~ xwork2 ){ return 403; } if ( $content_type ~ struts2 ){ return 40

搭建Nginx反向代理做内网域名转发

由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 80 端口.非 80 端口的映射在访问的时候要域名加上端口,比较麻烦. 我们可以在内网搭建一个Nginx反向代理服务器,将Nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到Nginx反向代理服务器,利用Nginx反向代理将不同域名的请求转发到内网不