我已将服务器配置为使用 httpd 作为代理并使用 Tomcat 来部署和运行应用程序。我使用 Apache httpd 作为代理将所有请求重定向到端口 80 和我的 Web 应用程序文件所在的 tomcat 目录:/usr/share/tomcat/webapps/website
。
重定向到的代理行http://localhost:8080/website
对我来说是有效的,但是当我尝试通过添加以下附加行来使用 HTTPS 时:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
/var/www/html
然后它只是重定向到位于默认 Apache httpd 页面的 Apache 目录。
这是我在 conf.file 中的配置:
<VirtualHost *:80>
ServerName website.com
ServerAlias www.website.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
DocumentRoot /usr/share/tomcat/webapps/website/
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://website.com:8080/website/
ProxyPassReverse / http://website.com:8080/website/
</VirtualHost>
<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
SSLHonorCipherOrder on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
SSLCertificateFile /etc/pki/tls/certs/domein.crt
SSLCertificateKeyFile /etc/pki/tls/private/domein-demo.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
我得到的结果是
Forbidden
You don't have permission to access this resource.
我已经尝试使用 授予 Apache 对 Tomcat 目录的权限sudo chown apache:apache /usr/share/webapps/website
。
答案1
当你这样做时:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
您正在将所有非 HTTPS 请求重定向到其 HTTPS 对应请求,并且 HTTPS 请求由<VirtualHost _default_:443>
配置而不是处理<VirtualHost *:80>
。尝试复制或移动这些配置:
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://website.com:8080/website/
ProxyPassReverse / http://website.com:8080/website/
从<VirtualHost *:80>
配置块到<VirtualHost _default_:443>
。