我有一台 apache tomcat 服务器,它运行在一台服务器上,该服务器具有一个网络接口(interface),具有本地 IP(如 LOCALIP),但用户希望在公共(public) IP(如 PUBLICIP)上看到服务器,他们不应该在本地 IP 上看到服务器。所有这些配置都在硬件防火墙上进行。
用户使用地址 PUBLICIP/mainpage 访问应用程序,应用程序检查用户是否通过身份验证。如果用户未通过身份验证,则用户将重定向到 PUBLICIP/login。 当用户重定向到/login 页面时,他将看到页面未找到 (404),但如果他在浏览器中手动键入 PUBLICIP/登录地址,他可以看到登录页面。
我们使用 HttpServletResponse.sendRedirect 将用户重定向到登录页面。
我认为这是一个重定向问题,因为出于安全考虑,任何对 PUBLICIP 的 ping 请求都会被防火墙丢弃。 servlet 尝试重定向到公共(public) IP 地址。
最佳答案
通常,在 Connector 上使用 proxyPort 和 proxyName告诉 Tomcat 反向代理(例如防火墙/负载平衡器)正在使用的公共(public) IP/DNS 名称和端口,以确保 Tomcat 生成的链接(例如重定向)使用公共(public) IP/名称和端口。
关于jakarta-ee - Apache Tomcat 发送重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612121/