Nginx反向代理关于端口的问题

Nginx反向代理关于端口的问题

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-28 14:04:49

Nginx反向代理关于端口的问题的相关文章

nginx反向代理隐藏端口号和项目名

可利用nginx反向代理隐藏端口号和项目名,直接输入ip即可访问对应的tomcat项目,配置nginx安装目录的nginx/conf/nginx.conf文件,修改如下:(只开了一个项目名为film5的web项目) server { listen 80; server_name 127.0.0.1; server_name_in_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $

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

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

nginx 反向代理时丢失端口的解决方案

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了. 这里给出一个简短的解决方案,修改nginx的配置文件. 一.配置文件 # the 90 port server { listen 90; server_name zxy1994.cn; proxy_set_header X-Forwarded-Host $host; proxy_set_

相同Ip 不同端口配置Nginx反向代理Apache

相同Ip  不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境  先后安装了Nginx  和Apache 由于 默认端口都是:80 一般客户请求的服务器端口默认为80  所以Nginx作为静态页端口设置:80 Apache设置端口为:8080(在httpd.conf  文件中修改Listen:8080) 如何跳转: 在nginx.conf中 添加 location / { proxy_pass http://202.85.224.166

nginx 反向代理时丢失端口的解决方案(转)

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常:如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了. 这里给出一个简短的解决方案,修改nginx的配置文件. 一.配置文件 # the 90 port server { listen 90; server_name zxy1994.cn; proxy_set_header X-Forwarded-Host $host; proxy_set_

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再

nginx反向代理

1. 操作系统 CentOS 6.4 x86_64 2.软件版本 Nginx 1.4.2 3.实验拓扑 注,实验拓扑见下文. 4.安装yum源 1 2 3 [root @nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh http://download.fedoraproject.org/

nginx 反向代理

关于什么是nginx以及为什么使用的理论网上还是有很多资料的,这里就不在赘述了.下面简单的说一下nginx的反向代理及实现 一.反向代理: 反向代理(Reverse Proxy)方式是指它根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端. 与正向代理不同,正向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端(如Web服务器)作为代理使用, 而不是客户端. 客户端通过正向代理可以访问很多不同的资源,而反向代理是很多客户端都通

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服