当前位置:首页 > 开发 > 开源软件 > 正文

nginx负载tomcat遇非80时的转发问题

发表于: 2015-06-04   作者:ronin47   来源:转载   浏览:
摘要:   nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port        详细如下:    该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的: ? 1 2 3 4 5

  nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port

       详细如下:

  

该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:

?
1
2
3
4
5
6
7
8
9
10
server {
     listen 80;
     server_name localhost;
     location / {
         proxy_pass http: //192 .168.1.100:8080;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

以上是nginx默认监听端口号为80的情况,由于公司系统是内网应用,用户已经将链接收藏起来了,收藏后的地址是之前的单台tomcat的8080端口,为了不影响他们的操作习惯所以决定让nginx继续监听8080端口,保持对外端口相同。

于是乎,我便想当然的把nginx的端口号改成了8080,把tomcat的端口改为了8081。改后的nginx配置如下:

?
1
2
3
4
5
6
7
8
9
10
server {
     listen 8080;
     server_name localhost;
     location / {
         proxy_pass http: //192 .168.1.100:8081;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

改完之后,重启测试发现问题了:

当访问http://localhost:8080后,浏览器自动跳转到了 http://localhost去了

这是为什么呢?????

如果nginx的监听端口不是默认的80端口,改为其他的端口非80端口后,后端服务tomcat中的 request.getServerPort()方法无法获得正确的端口号,仍然返回到80端口。在response.sendRedirect()时, 客户端可能无法获得正确的重定向URL。

所以正确的配置:

?
1
2
3
4
5
6
7
8
9
10
server {
     listen 8080;
     server_name localhost;
     location / {
         proxy_pass http: //192 .168.1.100:8081;
         proxy_set_header Host $host:8080;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

 

nginx负载tomcat遇非80时的转发问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前言:由于我的项目中存在发布webservice的服务,所以这里有必要将我遇到的问题梳理一下。 1、Webse
前一篇文章介绍了使用nginx进行负载均衡的方式,本篇开始搭建Tomcat的负载,前端采用nginx进行负载(
一个场景 最近在使用PHP重写一个使用JAVA写的项目,因为需要查看之前的项目,所以要在本地搭建一个T
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?可
Tomcat准备 使用的Tomcat自行准备 下载地址:http://tomcat.apache.org/ Tomcat配置: Memcached安
在Windows下 nginx + tomcat 负载均衡实践 : 假设 web应用 为 A , vm为真正的服务器,宿主机器用来负
在Windows下 nginx + tomcat 负载均衡实践 : 假设 web应用 为 A , vm为真正的服务器,宿主机器用来负
一、为什么需要对Tomcat服务器做负载均衡? Tomcat服务器作为一个Web服务器,其并发数在300-500之间
Tomcat准备 使用的Tomcat自行准备 下载地址:http://tomcat.apache.org/ Tomcat配置: Memcached安
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,具备占有内存少
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号