Apache HTTPS 重定向到 Tomcat Web 文件夹

Apache HTTPS 重定向到 Tomcat Web 文件夹

我已将服务器配置为使用 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>

相关内容