经过数小时的研究,我发布了这篇文章。我试图在 Amazon Lightsail 中的 LAMP 实例中创建的单个静态 IP 上添加一个域及其子域,并向两者添加 Let's Encrypt SSL 证书。在添加 SSL 之前,我的虚拟主机运行正常。来自正确目录的文件按照 httpd-vhosts.conf 中的定义提供。但是,在运行 bitnamibncert-tool
添加 SSL、https 和 www 重定向后,事情变得一团糟。
问题的详细解释:
- 创建一个静态 IP 并将其附加到我的 LAMP 实例。
@.example.com
为、www.example.com
、app1.example.com
和创建了 A 记录www.app1.example.com
。全部解析为先前创建的单个静态 IP。- 将repos 拉取到 htdocs (
/opt/bitnami/apache2/htdocs
) 中的各个目录。for和/opt/bitnami/apache2/htdocs/main
for 。example.com
/opt/bitnami/apache2/htdocs/app1
app1.example.com
- 将以下内容放入
/opt/bitnami/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "htdocs/main" ServerName realtypillar.com </VirtualHost> <VirtualHost *:80> DocumentRoot "htdocs/proutil" ServerName pro-util.realtypillar.com </VirtualHost>
- 在“/opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf”中添加了语句“Include“/opt/bitnami/apache2/conf/extra/httpd-vhosts.conf””。 (我能够分别访问
http://example.com
和http://app1.example.com
显示htdocs/main
和“htdocs/app11”) - 我运行了
sudo /opt/bitnami/bncert-tool
。example.com app1.example.com
在域列表提示符下输入。在提示符下启用 http 到 https 选项、启用非 www 到 www 选项并禁用 www 到非 www 选项。成功运行该过程,没有任何警告或错误消息。 - 现在,当我通过浏览器访问 example.com 时,它会重定向到
https://www.example.com
(这是正确的),但显示的是 index.html,htdocs
而不是htdocs/main
vhost 配置中指定的。当我访问 app1.example.com 时,它不会重定向到 https,也不会在 url 中添加 www 前缀。但它会从正确的目录(即)加载文件htdocs/app1
。
- -编辑 - -
以下是我的 httpd conf 文件,供参考:
- /opt/bitnami/apache2/conf/httpd.conf:https://pastebin.com/Vng1HAYY
- /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf: https://pastebin.com/4KsY42At
- /opt/bitnami/apache2/conf/bitnami/bitnami.conf: https://pastebin.com/S0xtgkNx
如果有人能指出我的错误之处,那将会很有帮助吗?
答案1
Bitnami 工程师在这里,
Bitnami HTTPS 配置工具仅更新主虚拟主机(/opt/bitnami/apache2/conf/bitnami/bitnami.conf 文件中的虚拟主机)的 SSL 配置,因此如果您有自定义虚拟主机,则需要使用该工具创建的 SSL 证书手动修改它们。对于您的情况,您需要在您创建的 httpd-vhosts.conf 文件中使用此配置
<VirtualHost *:80>
DocumentRoot "/opt/bitnami/apache2/htdocs/main"
ServerName realtypillar.com
ServerAlias realtypillar.com www.realtypillar.com
# BEGIN: Enable HTTP to HTTPS redirection
RewriteEngine On
RewriteRule ^/(.*) https://realtypillar.com/$1 [R,L]
# END: Enable HTTP to HTTPS redirection
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/opt/bitnami/apache2/htdocs/proutil"
ServerName pro-util.realtypillar.com
ServerAlias pro-util.realtypillar.com www.pro-util.realtypillar.com
# BEGIN: Enable HTTP to HTTPS redirection
RewriteEngine On
RewriteRule ^/(.*) https://pro-util.realtypillar.com/$1 [R,L]
# END: Enable HTTP to HTTPS redirection
</VirtualHost>
<VirtualHost _default_:443>
DocumentRoot "/opt/bitnami/apache2/htdocs/main"
ServerName realtypillar.com
ServerAlias realtypillar.com www.realtypillar.com
# BEGIN: Enable www to non-www redirection
RewriteEngine On
RewriteCond %{HTTP_HOST} !^realtypillar.com$
RewriteRule ^(.*)$ https://realtypillar.com$1 [R=permanent,L]
# END: Enable www to non-www redirection
<Directory "/opt/bitnami/apache2/htdocs/main">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache2/conf/realtypillar.com.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/realtypillar.com.key"
</VirtualHost>
<VirtualHost _default_:443>
DocumentRoot "/opt/bitnami/apache2/htdocs/proutil"
ServerName pro-util.realtypillar.com
ServerAlias pro-util.realtypillar.com www.pro-util.realtypillar.com
# BEGIN: Enable www to non-www redirection
RewriteEngine On
RewriteCond %{HTTP_HOST} !^pro-util.realtypillar.com$
RewriteRule ^(.*)$ https://pro-util.realtypillar.com$1 [R=permanent,L]
# END: Enable www to non-www redirection
<Directory "/opt/bitnami/apache2/htdocs/proutil">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache2/conf/realtypillar.com.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/realtypillar.com.key"
</VirtualHost>
仅供参考,我们讨论了所有这些变化Bitnami 社区论坛的这个主题。