nginx -> 带有文件夹路径的雄猫 - 重定向太多



我试图使用nginx作为两个Tomcat实例的反向代理,每个实例都在自己的VM中。问题是:当我开始添加一个文件夹路径到proxy_pass参数,我得到一个310错误:太多的重定向。

我做错了什么?任何建议都很感激。第一个服务器工作得很好,但正如前面提到的,第二个添加了文件夹路径的服务器无法工作。

这是我的nginx配置:
server {
  listen 80;
  server_name oc.domain.tld;
  location / {
       proxy_pass http://172.16.81.73;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
}
server {
  listen 80;
  server_name test.domain.tld;
  location / {
       proxy_pass http://172.16.75.99/OpenClinica/;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
server {
   listen       80  default_server;
   server_name  _;
   return       444;
}

edit:目前没有启用SSL (tomcat &nginx)

edit2:我的重写日志是空的(如果我打开它,调试在通知级别)
我刚刚在我的nginx日志(GET…/login/login行重复约20次:

190.215.166.212 - - [04/May/2013:22:29:21 -0400] "GET /OpenClinica/pages/login/login HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
190.215.166.212 - - [04/May/2013:22:29:21 -0400] "GET /OpenClinica/pages/login/login HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
190.215.166.212 - - [04/May/2013:22:29:25 -0400] "-" 400 0 "-" "-"
190.215.166.212 - - [04/May/2013:22:29:25 -0400] "-" 400 0 "-" "-"

看起来,nginx请求....循环中的Login/Login。所以问题可能出在雄猫那边?

我认为可能发生的事情是重定向发生在Tomcat端,而不是Nginx端,所以我认为你可能没有给我们足够的信息来弄清楚这一点。

然而,你可以很容易地调查这个问题,通过添加:

rewrite_log on;

这样你就能准确地看到它正在重写什么,如果它在Nginx端,它是否/在哪里进入循环。

编辑

我刚发现这个行nginx日志(GET…/登录/登录台词重复约20次:GET/OpenClinica/页面/登录/登录GET/OpenClinica/页面/登录/登录

这听起来就像重定向纯粹发生在Tomcat内部,而不是Nginx内部重定向,因为请求在它们之间正确传递,但是你的浏览器可以看到它一直被重定向到相同的地方。

在没有看到所有相关代码的情况下,我无法确定确切的细节,但看起来有些代码相当于:

  1. 用户是否已登录或正在登录页面/pages/login/login ?
  2. 不-将它们重定向到登录页面/pages/login/login

因为Nginx正在代理请求:

http://172.16.75.99/OpenClinica/;

它总是将OpenClinica添加到URL的开头,因此Java应用程序认为它永远不会是/pages/login/login,因此它一直重定向。

您可以通过使Java重定向更智能或通过更改代理设置来删除OpenClinica路径(即

)来解决此问题。
proxy_pass http://172.16.75.99

不带尾斜杠,以使URL路径完全按照用户的请求传递给Tomcat服务器。

(您也可以通过在Tomcat中为应用程序设置appBase路径来设置它,以便它知道期望以OpenClinica开头的URL路径-但我不是Tomcat专家。)

最新更新