我的一个 java 项目 a 部署在 tomcat 的 webapps 目录下,通过下面的配置可以成功通过 www.example.com 访问到,但 session 和 cookie 失效。
nginx 的 default.conf 配置文件
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate sslcert/1_www.example.com_bundle.crt;
ssl_certificate_key sslcert/2_www.example.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://ip 地址:8080;
proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name www.example.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
tomcat 的 server.xml 配置文件
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!-- 添加的虚拟主机 -->
<Host name="www.example.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 去除访问时 URL 中的项目名 -->
<Context path="" docBase="a" debug="0"/>
</Host>
</Engine>
我在百度、谷歌上搜索这个问题返回很多结果,基本都是
proxy_pass http://ip 地址:8080/a
然后通过添加
proxy_cookie_path /a/ /
就解决了问题。但是这个配置跟我的不一样,QAQ。我在 server.xml 的
<Host name="www.example.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 去除访问时 URL 中的项目名 -->
<Context path="" docBase="a" debug="0"/>
</Host>
已经把 www.example.com 的请求已经发到项目 a 了,因此不需要 proxy_pass http://ip 地址:8080/a 这样做。
有老哥知道这个怎么弄么? Thanks in advance。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.