使用 tomcat 7 https 服务器配置 mod_proxy apache https 服务器
Configure mod_proxy apache https server with tomcat 7 https server
我是 Web 服务器配置的新手,这里是场景,我们有一个 hybris tomcat 服务器,它是 运行 9002 上的 https 和 9001 上的 http。我需要使用 mod_proxy 服务器配置 apache 网络服务器,它将通过 80 端口打开 https 和 http。我尝试为 tomcat https 和 http 站点配置 mod_proxy,但该站点仅在 http 中工作。客户只允许 80 端口,任何人都可以帮助我解决方案。
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so
<VirtualHost *:80>
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyPass / http://tomcatserver.ip:9001/
ProxyPassReverse / http://tomcatserver.ip:9001/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ProxyPreserveHost On
ServerName webserver.ip
SSLEngine on
SSLProxyEngine On
ProxyPass / https://tomcatserver.ip:9002/
ProxyPassReverse / https://tomcatserver.ip:9002
SSLCertificateFile /etc/ssl/certs/webserverdomain.crt
SSLCertificateKeyFile /etc/ssl/certs/webserverdomain.key
</VirtualHost>
server.xml configuration
<Connector port="${tomcat.http.port}"
maxHttpHeaderSize="8192"
maxThreads="${tomcat.maxthreads}"
protocol="org.apache.coyote.http11.Http11Protocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="100"
connectionTimeout="20000"
URIEncoding="UTF-8"
disableUploadTimeout="true"
proxyName="webserverdomainname" proxyPort="80" /> />
<Connector port="${tomcat.ssl.port}"
maxHttpHeaderSize="8192"
maxThreads="150"
protocol="org.apache.coyote.http11.Http11Protocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="${tomcat.acceptcount}"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
SSLEnabled="true"
proxyName="webserverdomainname"
proxyPort="443"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol = "TLS"
keystoreFile="${catalina.home}/lib/keystore"
keystorePass="123456"
这里是 tomcat server.xml 文件
谢谢@christopher @Benoit
这里发生的事情是 SSLProxyEngine 正在检测一个无效的 ssl 证书,所以你需要明确地告诉他不要检查任何东西!
此配置适用于开发但不适用于生产,在生产中您应该卸载 ssl 证书并将所有流量发送到带有 'RequestHeader set X-Forwarded-Proto "https"' 标志的 http 并添加一个阀门到 Tomcat配置
为此更改您的 Apache 配置:
<VirtualHost *:443>
DocumentRoot /var/www/html
ProxyPreserveHost On
ServerName webserver.ip
SSLEngine on
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass / https://tomcatserver.ip:9002/
ProxyPassReverse / https://tomcatserver.ip:9002
SSLCertificateFile /etc/ssl/certs/webserverdomain.crt
SSLCertificateKeyFile /etc/ssl/certs/webserverdomain.key
</VirtualHost>
我是 Web 服务器配置的新手,这里是场景,我们有一个 hybris tomcat 服务器,它是 运行 9002 上的 https 和 9001 上的 http。我需要使用 mod_proxy 服务器配置 apache 网络服务器,它将通过 80 端口打开 https 和 http。我尝试为 tomcat https 和 http 站点配置 mod_proxy,但该站点仅在 http 中工作。客户只允许 80 端口,任何人都可以帮助我解决方案。
LoadModule headers_module modules/mod_headers.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule ssl_module modules/mod_ssl.so <VirtualHost *:80> DocumentRoot /var/www/html ProxyPreserveHost On ProxyPass / http://tomcatserver.ip:9001/ ProxyPassReverse / http://tomcatserver.ip:9001/ </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/html ProxyPreserveHost On ServerName webserver.ip SSLEngine on SSLProxyEngine On ProxyPass / https://tomcatserver.ip:9002/ ProxyPassReverse / https://tomcatserver.ip:9002 SSLCertificateFile /etc/ssl/certs/webserverdomain.crt SSLCertificateKeyFile /etc/ssl/certs/webserverdomain.key </VirtualHost>
server.xml configuration
<Connector port="${tomcat.http.port}" maxHttpHeaderSize="8192" maxThreads="${tomcat.maxthreads}" protocol="org.apache.coyote.http11.Http11Protocol" executor="hybrisExecutor" enableLookups="false" acceptCount="100" connectionTimeout="20000" URIEncoding="UTF-8" disableUploadTimeout="true" proxyName="webserverdomainname" proxyPort="80" /> /> <Connector port="${tomcat.ssl.port}" maxHttpHeaderSize="8192" maxThreads="150" protocol="org.apache.coyote.http11.Http11Protocol" executor="hybrisExecutor" enableLookups="false" acceptCount="${tomcat.acceptcount}" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" SSLEnabled="true" proxyName="webserverdomainname" proxyPort="443" scheme="https" secure="true" clientAuth="false" sslProtocol = "TLS" keystoreFile="${catalina.home}/lib/keystore" keystorePass="123456"
这里是 tomcat server.xml 文件 谢谢@christopher @Benoit
这里发生的事情是 SSLProxyEngine 正在检测一个无效的 ssl 证书,所以你需要明确地告诉他不要检查任何东西!
此配置适用于开发但不适用于生产,在生产中您应该卸载 ssl 证书并将所有流量发送到带有 'RequestHeader set X-Forwarded-Proto "https"' 标志的 http 并添加一个阀门到 Tomcat配置
为此更改您的 Apache 配置:
<VirtualHost *:443>
DocumentRoot /var/www/html
ProxyPreserveHost On
ServerName webserver.ip
SSLEngine on
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass / https://tomcatserver.ip:9002/
ProxyPassReverse / https://tomcatserver.ip:9002
SSLCertificateFile /etc/ssl/certs/webserverdomain.crt
SSLCertificateKeyFile /etc/ssl/certs/webserverdomain.key
</VirtualHost>