我在 iis 7.5 代理服务器后面使用嵌入式 tomcat 7,并使用 arr 将请求转发到 tomcat。
除非 iis 设置为需要 ssl,否则一切都正常。
那么,在 tomcat 上的文件中动态生成的链接之类的东西.jsp
就无法正常工作。例如如果一个链接应该指向https://somewhere.com:443
它将被写为http://somewhere.com:8080
(8080 是 tomcat 正在运行的端口)。
问题似乎来自于当 tomcat 查看自身以构建它正确看到的正在运行的 url 时http://somewhere.com:8080
,但我需要它以其他方式思考。
有人知道如何在 iis 和 tomcat 之间不使用 ssl 来实现这一点吗?
答案1
此问题是由于 Tomcat 不知道URL
应用程序的实际外部。当应用程序重定向到相对 URL 时,Servlet 会将完整的绝对 URL 添加到 Location(根据需要)。
HTTP
如果您在和 Tomcat之间使用IIS
,Tomcat 会认为您正在使用HTTP
并生成http://...
绝对的URL
。
解决方案不是在 和 Tomcat 之间使用HTTP
(也不使用HTTPS
) IIS
。
您应该使用AJP13
协议 和Tomcat-ISAPI Redirector
上的IIS
。
这是官方的 Tomcat+IIS 如何。
使用 Apache 作为代理,您可以使用 HTTP 进行代理,但您需要配置 Apachemod_proxy
并告诉 Tomcat 它位于代理后面。 以下是该过程的操作方法。