是否可以使用http和https使NGINX在Tomcat上与Liferay一起工作?
我正在尝试在前端配置NGINX,在后端配置Tomcat,以使其能够协同工作 我用2个连接器配置了Tomcat server.xml:是否可以使用http和https使NGINX在Tomcat上与Liferay一起工作?,https,proxy,nginx,liferay,tomcat7,Https,Proxy,Nginx,Liferay,Tomcat7,我正在尝试在前端配置NGINX,在后端配置Tomcat,以使其能够协同工作 我用2个连接器配置了Tomcat server.xml: <Connector port="8443" protocol="HTTP/1.1" scheme="https" secure="true" proxyPort="443" proxyName="www.myhost.com" connectionTimeout="20000" URIEncoding="UTF-8" /> <Connect
<Connector port="8443" protocol="HTTP/1.1" scheme="https" secure="true" proxyPort="443" proxyName="www.myhost.com" connectionTimeout="20000" URIEncoding="UTF-8" />
<Connector port="8080" protocol="HTTP/1.1" scheme="http" proxyPort="80" proxyName="www.myhost.com" connectionTimeout="20000" URIEncoding="UTF-8" />
当用户在http://www.myhost.com和https://www.myhost.com上调用我的网站时,我的NGINX服务器接收请求。
每次调用(不包括缓存…)时,NGINX都会根据原始请求(http或https)的方案,在8080端口或8443上向我的Tomcat服务器发送请求
它工作正常,但Tomcat似乎给我的webapp提供了错误的信息(实际上,我的webapp是Liferay)。它提供了错误的服务器主机
例如,当我在http://www.myhost.com上调用我的服务器时,NGINX在8080端口上调用Tomcat,但Liferay似乎收到了一个服务器主机不正确的请求(http*s*://www.myhost.com/)。
Liferay使用此服务器主机构建链接。
实际上,Liferay正在构建的所有链接都与此模式匹配:http*s*:///www.myhost.com/
根据我的说法,在我的配置中,它应该是这样工作的:
- Tomcat在8080端口接收请求
- Tomcat知道我的电话是在http://www.myhost.com上的
- Tomcat在端口(8080)上收到消息时,应将proxyHost(www.myhost.com)和proxyPort(80)交给Liferay webapp(Liferay应使用request.getServerPort()和request.getServerHost()检索这些信息)
有人已经解决了这个问题吗 这不是推荐的方法。如果您有一个类似NGINX的代理(在我的例子中是pound),那么SSL层应该留给代理。这允许代理检查HTTP头以提供“粘性”会话,其中用户停留在集群外的单个tomcat web服务器上 在我的例子中,我让tomcat在localhost:8080上监听 Pound侦听外部ip:80并仅返回重定向到https(外部ip:443) Pound还监听外部ip:443,解密SSL和8080上tomcat的代理(实际上是一个tomcat集群) 您还需要在portal-ext.properties中设置一些参数:
web.server.http.port=80
web.server.https.port=443
web.server.protocol=https 这告诉LifeRay在端口443上以HTTPS的形式生成所有链接,该端口匹配SSL代理的公共接口
现在的问题是,如果您直接连接8080上的tomcat,LifeRay将生成“错误”链接并将您发送到代理。我仍然没有找到一种方法来解决这个问题。在nginx站点配置中使用nginx作为tomcat安装的反向代理是可能的
server {
listen 80;
server_name my.server.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8080;
}
}
这允许您在nginx上设置另一个虚拟主机(服务器名称),并转发到您的tomcat安装。在此处添加SSL/TLS支持,而不是在tomcat配置中
我还没有检查webdav,但是使用带有webbrowser的门户网站非常有魅力 请发布您的nginx.conf文件。