Ces*_*sar 4 tomcat nginx reverse-proxy apache-2.2
我在 tomcar 服务器中有几个应用程序。我使用 nginx 作为代理,所以我可以实现从子域加入应用程序
tomat:8080/app1 > app1.mydomain.com
tomat:8080/app2 > app2.mydomain.com
Run Code Online (Sandbox Code Playgroud)
我设置了一个反向代理:
server {
listen 80;
server_name app1.mydomain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://tomcat:8080/app1/;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地访问该应用程序。但它无法保持会话。我在码头有另一个应用程序,它在 ngix 后面运行没有问题。此外,如果我直接访问应用程序,我可以毫无问题地操作它。
任何提示?
谢谢。
小智 10
我注意到当代理位置路径与 Tomcat 应用程序上下文名称不匹配并且 cookie 路径不匹配时会出现问题,这会导致每个请求都有一个新的 JSESSIONID。
尝试添加 proxy_cookie_path 指令,如下所述:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_cookie_path ~*^/.* /;
proxy_pass http://tomcat:8080/app1/;
}
Run Code Online (Sandbox Code Playgroud)