开发者社区 问答 正文

nginx 代理tomcat 无法正确定位的疑问

我在使用nginx代理tomcat时遇到一个奇怪的问题。
配置:
nginx:

server {
    listen 80;
    server_name tomcat.dev;
    location /{
        proxy_pass http://127.0.0.1:8800/tomcat/$request_uri;
        proxy_redirect  off; 
        proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;     
       proxy_set_header X-Forwarded-For $http_x_forwarded_for;
    }
}

tomcat:

<Host 
          name="localhost"  
          appBase="/usr/share/tomcat7-root"
          unpackWARs="true" 
          autoDeploy="true">     
        <Valve 
            className="org.apache.catalina.valves.AccessLogValve" 
            directory="logs"
            prefix="localhost_access_log."
            suffix=".txt"
            pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context 
            path="/tomcat" 
            docBase="/usr/share/nginx/html/tomcat/" 
            debug="0"/> 

我想做的是用nginx代理访问tomcat中的“tomcat”这个项目,我为它添加了contentPath,在页面访问tomcat.dev 的时候,每次刷新页面取得的都是不同的sessionid,我看了一下浏览器,没有JSESSIONID 这个cookie。然后我又通过localhost/tomcat/来访问,就没有问题。
然后我又将上面配置部分修改。去掉“tomcat”,将contextPath设置为“/”。nginx 的改成 proxy_pass http://127.0.0.1:8800/$request_uri;再通过tomcat.dev访问就是正常的。
各路大神求解。

展开
收起
落地花开啦 2016-05-27 17:00:54 2454 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    proxy_pass 不能写 URL 的后面的东西,只能是 http://host:port 这样的形式

    2019-07-17 19:18:18
    赞同 展开评论