在我之前的问题,SSL 证书对我来说不起作用,直到我使用相对路径而不是绝对路径才能使其工作。
问题:为什么我的 VirtualHost/httpd 不接受绝对路径?是否需要进行某些配置?
我的 VirtualHost (不工作);
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
RewriteEngine on
RewriteRule ^/?(.*) https://example.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/msdfw
ErrorLog /var/iwww/logs/e-msdfw
CustomLog /var/iwww/logs/c-msdfw combined
DirectoryIndex index.php
SSLEngine on
SSLCertificateFile /var/iwww/certs/msdfw/c.pem
SSLCertificateKeyFile /var/iwww/certs/msdfw/p.key
SSLCertificateChainFile /var/iwww/certs/msdfw/b.pem
<Directory /var/www/msdfw/>
Require all granted
</Directory>
</VirtualHost>
错误日志:
Sep 26 17:00:11 localhost systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has begun starting up.
Sep 26 17:00:11 localhost httpd[5579]: AH00526: Syntax error on line 15 of
/etc/httpd/enabled/msdfw.conf:
Sep 26 17:00:11 localhost httpd[5579]: SSLCertificateFile: file
'/var/iwww/certs/msdfw/c.pem' does not exist or is empty
Sep 26 17:00:11 localhost systemd[1]: httpd.service: main process exited,
code=exited, status=1/FAILURE
Sep 26 17:00:11 localhost kill[5581]: kill: cannot find process ""
Sep 26 17:00:11 localhost systemd[1]: httpd.service: control process exited,
code=exited status=1
Sep 26 17:00:11 localhost systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit httpd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has failed.
--
-- The result is failed.
Sep 26 17:00:11 localhost systemd[1]: Unit httpd.service entered failed state.
Sep 26 17:00:11 localhost systemd[1]: httpd.service failed.
虚拟主机(工作):
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
RewriteEngine on
RewriteRule ^/?(.*) https://example.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/msdfw
ErrorLog /var/iwww/logs/e-msdfw
CustomLog /var/iwww/logs/c-msdfw combined
DirectoryIndex index.php
SSLEngine on
SSLCertificateFile /etc/httpd/certs/msdfw/c.pem
SSLCertificateKeyFile /etc/httpd/certs/msdfw/p.key
SSLCertificateChainFile /etc/httpd/certs/msdfw/b.pem
<Directory /var/www/msdfw/>
Require all granted
</Directory>
</VirtualHost>
我必须将包含证书的文件夹移动到httpd
文件夹(相对)才能使其正常工作?有人知道为什么以及如何让它接受绝对路径吗?谢谢!
答案1
不,你可以从任何地方指定绝对路径,只要 httpd 可以访问它们(使用 root)
关于配置,适用于 httpd 的唯一规则是相对路径相对于 ServerRoot 路径,但如果您指定绝对路径,它们可以指向您指定的文件系统中的任何位置。
因此,请仔细检查以前的路径和文件是否存在,或者 SELinux 或类似程序是否没有妨碍。