我有一个 cakephp 应用程序在 docker 容器上运行,里面有 apache web 服务器。 我当前的 apache 配置如下所示:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>
如果我在浏览器上访问 http://localhost 或 http://localhost:80(localhost 以某种方式重定向到 localhost:80),它会显示 400 Bad Request,我应该使用 https 而不是 http。好的,所以我转到 https://localhost:80 并且它工作正常(注意:https://localhost 不起作用,我必须将端口号放在最后)
我的问题是,如何让 http://localhost 显示 https://localhost:80 当前显示的内容?
我已经尝试将我的 apache 配置更改为此:
<VirtualHost *:80>
ServerName localhost
Redirect permanent / https://localhost/
</VirtualHost>
<VirtualHost *:443>
ServerName localhost
DocumentRoot /var/www/html/
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
如果我去 http://localhost 或 http://localhost:80 它被重定向到 https://localhost 好吧,但它不起作用(无法连接)。如果我去 https://localhost:80 或 https://localhost:443 它也不起作用。我应该如何修改 apache 配置以使其在 http://localhost 上工作?我的 Dockerfile 或 docker-compose 配置会影响这个吗?我试着问 chatGPT 所有这些,但它给我的答案没有帮助。