default-ssl.conf 非常容易理解。我假设它是在没有 vhost 或其他配置覆盖它时使用的默认值。
但是 000-default-le-ssl.conf 文件到底是什么?为什么它要这样命名?前面的三个零是什么意思?它与 default-ssl.conf 有何不同/使用方式有何不同?应该如何使用其中一个/两者?
无论使用哪个 conf 文件,我都发现可以使用的默认值非常少。对于多个域,我实际上无法使用 ServerName/ServerAlias,而且由于每个域都有自己的目录/端口,因此我也无法使用默认的 DocumentRoot/Proxy。就我而言,我为每个域都生成了 SSL 证书,因此也无法在那里使用默认值。甚至每个域的 ServerAdmin 也可能不同。基于此用例,我应该将其几乎留空还是我遗漏了什么?在这种情况下,最佳做法是什么?
我在 Ubuntu 18.04 上运行最新的 Apache 服务器。
答案1
文件名前面的 0 只是强制在扫描目录时按顺序进行,并逐一处理结果。
使用 apache 时,如果客户端连接并请求您的服务器未配置为提供的主机名,则第一个读取/处理的虚拟主机就是客户端被发送到的虚拟主机。
该default-le
配置听起来像是 LetsEncrypt 可能用于身份验证/确认的配置,但这只是基于le
文件名中出现的猜测。要确定,您应该检查内容,如果有问题请发帖。
至于默认值等,您可以共享几乎所有的配置信息,或者至少是文件路径的父目录等。
这是我使用的模板,根据需要替换 DOMAIN 和 YOURIP。
<VirtualHost *:80>
ServerName DOMAIN
ServerAlias www.DOMAIN
RewriteEngine on
RewriteRule ^/(.*)$ https://www.DOMAIN/$1 [R,L]
</VirtualHost>
<VirtualHost YOURIP:443>
ServerName DOMAIN
ServerAlias www.DOMAIN
ServerAdmin webmaster@DOMAIN
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/DOMAIN/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-DOMAIN
<directory /var/www-DOMAIN>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-DOMAIN-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-DOMAIN-access.log combined
</VirtualHost>
答案2
快速回答:你看到这里发生了两件事——
TLDR1:“为什么是 000-sitename.conf?”而不是“sitename.conf?” 前者通常只是第一个的符号链接,您可以通过ls -alh
检查l
文件权限的修饰符来判断。
TLDR2:“为什么选择 sitename.conf 而不是 sitename-le-ssl.conf?” 前者处理 HTTP 验证(文件中指示的端口名为80
),后者处理 HTTPS 验证(文件中指示的端口名为443
)。
答案3
但是 000-default-le-ssl.conf 文件到底是什么?为什么它要这样命名?前面的三个零是什么意思?
正如其他人提到的,在前面添加数字是强制执行特定顺序(例如配置文件)的常用方法。这使得该文件很早就被加载。
它与 default-ssl.conf 有何不同/使用方式有何不同?应如何使用其中之一/两者?
default-ssl.conf
这是 Apache 为配置了 SSL 的服务器提供的模板。它对最常用的选项有很多解释。您可以将其用作您自己的配置的基础。000-default-le-ssl.conf
这是由 Let's Encryptcertbot
命令自动生成的。它有一些特定的设置,例如,证书文件的路径已经正确设置。如果您希望使用生成的 Let's Encrypt 证书,请将其用作配置的基础。
当然,你可以随意混合使用两个文件中的选项,但请确保你理解这些选项的含义。你可以找到Apache SSL 选项的在线文档。
对于多个域,我实际上不能使用 ServerName/ServerAlias
只需添加多个VirtualHost
部分:
<VirtualHost *:443>
ServerName firstdomain.example.com
# more options for your 1st domain
</VirtualHost>
<VirtualHost *:443>
ServerName seconfdomain.example.com
# more options for your 2nd domain
</VirtualHost>