0

我在尝试将我的 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 进入我的网站,但如果我没有写这个,虚拟主机似乎无法正常工作。

问候。

4

1 回答 1

0

设置 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 选项匹配。

我希望它有帮助。

于 2020-05-18T19:32:35.160 回答