我在尝试配置apache服务器以托管多个域时遇到了一些麻烦。在这一刻,我只有一个,但是我想让它准备容纳更多。我不知道如何使服务器在启用SSL的情况下侦听端口80和443。我在虚拟主机的.conf文件中有此配置:
<IfModule mod_ssl.c>
<VirtualHost *:80>
DocumentRoot /var/www/mygamingmoments
ServerName mygamingmoments.es
<Directory "/var/www/html/mygamingmoments">
allow from all
Options Indexes FollowSymLinks
Require all granted
AllowOverride All
RewriteEngine On
RewriteOptions Inherit
</Directory>
SSLCertificateFile /etc/letsencrypt/live/mygamingmoments.es/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mygamingmoments.es/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
事实是,现在我可以使用https进入我的站点,但是如果我没有写这个,则虚拟主机似乎无法正常工作。
问候。
建立Apache的方法很多,所以我将展示您可能想要做的事情。
如果您要重定向端口80的所有流量以443,为防止访问http或https,这取决于您将域名放在哪个端口后,您可以执行类似的操作或适应您的实际意图。
因此在端口80的虚拟主机中,您需要这样的内容:
<VirtualHost *:80>
ServerName your-domain.something
ServerAlias www.your-domain.somenthing
DocumentRoot /path/to/source
<Directory /path/to/source>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =your-domain.something [OR]
RewriteCond %{SERVER_NAME} =www.your-domain.somenthing
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
这里每个对您的站点或应用程序的请求,无论使用www还是不使用www,都将重定向到另一个具有https协议的虚拟主机,因此您需要创建它。
端口443的虚拟主机。
<VirtualHost *:443>
ServerName your-domain.something
ServerAlias www.your-domain.somenthing
DocumentRoot /path/to/source
<Directory /path/to/source>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Include /path/to/options-ssl-apache.conf
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
</VirtualHost>
您可以在同一文件或另一个文件中进行此操作,以提高组织性(例如,my-site.conf),但是如果选择在另一个文件中进行此操作,则必须将此“站点”添加到启用了apache环境且具有< [a2ensite:
# a2ensite path-to-your-config-file
# systemctl reload apache2
使用此示例,您应该知道,如果您要在环境中拥有各种站点,您将需要每个站点都拥有自己的虚拟主机。在这种方法中,一个用于端口80的虚拟主机和一个对应于端口433的虚拟主机。其关键是使请求与每个虚拟主机上的ServerName或ServerAlias选项匹配。
我希望能有所帮助。