前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 反向代理 Tomcat 错误示例

Nginx 反向代理 Tomcat 错误示例

作者头像
用户1560186
发布2019-11-19 21:31:19
1.3K0
发布2019-11-19 21:31:19
举报
文章被收录于专栏:运维录

开始之前


这篇文章的内容来源 2016年的两篇文章,当时使用 Nginx 反向代理 Tomcat/Resin 出现错误,发现是 proxy_redirect 指令导致的问题,错误的原因令人印象很深刻。

错误是因为没有详细查看指令和参数的含义直接照搬他人的示例配置,这种方式是不可取的因为你们的环境与需求可能是不同的,同样参数配置可能会适合作者但未必能适合你,所以示例配置仅能作参考,务必要结合自己的实际需求做出相应调整。

问题描述


某台测试机安装有 nginx 与 tomcat ,并使用nginx 反向代理 tomcat ,错误表现为访问服务器时会重定向为 tomcat的地址,因为tomcat 是内网服务器地址,最终浏览器返回无法链接错误信息,查看HTTP响应信息 Location 为 http://127.0.0.1:8204/ 。

配置文件


代码语言:javascript
复制
server
{
    #... 其它配置项省略

    location / {
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $http_host;
        proxy_pass http://127.0.0.1:8204/;
        proxy_redirect off;   #注意这里
    }
    
    #... 其它配置项省略
}

关于参数含义请参考这篇文章 Nginx Proxy反向代理

问题原因


使用 nginx 反向代理 tomcat 或者 resin服务器,如果出现上述的问题。

请检查nginx配置文件中 proxy_redirect指令是否使用了off选项 ,如果使用了off选项,则关闭所有的 proxy_redirect 指令。

在不确定off参数是否有副作用的情况下可以使用默认选项,即 "proxy_redirect default;" 。

proxy_redirect 指令


代码语言:javascript
复制
语法: proxy_redirect [ default|off|redirect replacement ]
默认值: proxy_redirect default
使用字段: http, server, location
功能: 这个指令用于修改从被代理服务器响应头中的"Location"和"Refresh"字段。
示例

假设

被代理服务器返回的 Location字段为:http://localhost:8080/3g/video

设置

proxy_redirect http://localhost:8080/3g/ http://demo.com/m/;

那么

Location 字段将 重写为 http://demo.com/m/video 。

default 参数

将根据location和proxy_pass 指令的设置来决定,例如下列两个配置等效的。

代码语言:javascript
复制
location /m/ {
    proxy_pass http://upstream:port/3g/;
    proxy_redirect default;
}

location /m/ {
    proxy_pass http://upstream:port/3g/;
    proxy_redirect http://upstream:port/3g/ /m/;
}
off 参数

将在这个字段中禁止所有的 proxy_redirect指令:

代码语言:javascript
复制
proxy_redirect off;
proxy_redirect default;
proxy_redirect http://localhost:8080/ /;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始之前
  • 问题描述
  • 配置文件
  • 问题原因
  • proxy_redirect 指令
    • 示例
      • default 参数
        • off 参数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档