我的问题是关于SSL安装的。我为在Apache 2.4.29的Ubuntu 16.04机器上托管的网站购买了新的SSL。我能够安装此程序,但没有出现任何错误,但我的页面未重定向。我遵循了一些指南(DigitalOcean),但是感觉到我缺少一些东西。
我已经检查了站点可用的文件(000-default.conf,default-ssl.conf和example.com.conf),但没有发现任何引起我注意的内容,但是我感觉自己缺少一些东西。我检查了Apache的状态,没有收到任何错误,并且已经多次重启服务,但无济于事。
这是我所拥有的大致分类。我想念什么吗?设置是否需要其他信息?
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Redirect "/" "https://example.com/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
SSLCertificateFile /root/example.com.crt
SSLCertificateKeyFile /root/www.example.com.key
SSLCACertificateFile /root/intermediate.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>4
mydomain.com.conf
<VirtualHost *:443>
ServerAdmin admin@somedomain.com
ServerName mydomain.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
Redirect permanent / https://example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案 0 :(得分:0)
这是我尝试组合配置的尝试。请注意,我没有用于测试的设置,但是在生产服务器上使用了类似的配置。
首先定义端口80 VirtualHost(设置中为000-default.conf):
Listen 80
<VirtualHost *:80>
Redirect "/" "https://example.com/"
LogLevel debug
ErrorLog "${APACHE_LOG_DIR}/80_error.log"
CustomLog "${APACHE_LOG_DIR}/80_access.log" combined
</VirtualHost>
因为您重定向了所有内容,所以不需要DocumentRoot
。
然后将default-ssl.conf
注释掉。该文件是您可以设置启用SSL的VirtualHost的示例。如果您使用该文件和端口443上的另一个VirtualHost,则将始终使用该文件,因为Apache使用了它发现与客户端请求匹配的第一个VirtualHost(此处为端口443)。
另一方面,VirtualHost没有彼此“添加”在一起。每个独立于其他,并且必须包含完整的配置。这意味着您不能将某些配置放在端口443上的VirtualHost上,而不能将某些配置放在端口上并希望它能正常工作。
然后创建您的example.com.conf
文件:
Listen 443
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
SSLCertificateFile "/root/example.com.crt"
SSLCertificateKeyFile "/root/example.com.key"
SSLCACertificateFile "/root/intermediate.crt"
LogLevel debug
ErrorLog "logs/443_error_log"
CustomLog "logs/443_access_log" combined
DocumentRoot "/var/www/example.com/html"
DirectoryIndex index.html
<Directory "/var/www/example.com/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
一些注意事项:
LogLevel
置于调试状态,因此您可以进行故障排除,但是一旦运行,请将其更改为错误。否则,您将很快拥有巨大的日志文件!Redirect permanent / https://example.com
。您已经在https
的端口443 VirtualHost中。<FilesMatch>
指令的选项。此设置将确保所有http
请求都将重定向到https://example.com
。然后它将使用:443 VirtualHost,为该域使用适当的证书,并提供DocumentRoot目录中的内容。