如果我在 VirtualHost 中指定了 DocumentRoot,我是否需要一个指定的?

如果我在 VirtualHost 中指定了 DocumentRoot,我是否需要一个指定的?

我使用的是之前配置的默认 VirtualHost 文件(当时我还不太清楚这些东西的工作原理),我不确定应该保留哪些内容。我不想只是尝试,因为设置一个包含所有这些东西的虚拟机会很麻烦,而且当前配置是在生产环境中,所以反复试验并不是一个真正的选择。以下是文件,名称已更改以保护无辜者:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.my.hostname
    ServerAlias my.hostname
    DocumentRoot /var/www/mysite
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/mysite>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    LogFormat "%t   %T/%D   \"%r\"   %>s   %b" mysitelog
    CustomLog ${APACHE_LOG_DIR}/mysite.access.log mysitelog

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

我的问题是:

  1. 我应该删除该<Directory />阻止吗?注释中指定了$APACHE_HOME/conf.d/security“这目前破坏了某些 Web 应用程序 Debian 软件包附带的配置”。我应该取消注释此版本并从我的虚拟主机中删除它吗?

  2. 这只不过是 PHP,所以我猜没有理由保留 cgi 块和别名。

  3. 我猜我也可以把这些东西扔掉doc。我甚至不确定这些东西是干什么用的,所以如果你能解释一下在“正常”设置下这些东西的用途,那就加分了(其实不是)。

因此,假设我的所有想法都是正确的,我的新 vhost 文件可能如下所示:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.my.hostname
    ServerAlias my.hostname
    DocumentRoot /var/www/mysite

    <Directory /var/www/mysite>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    LogFormat "%t   %T/%D   \"%r\"   %>s   %b" mysitelog
    CustomLog ${APACHE_LOG_DIR}/mysite.access.log mysitelog

</VirtualHost>

非常欢迎任何其他提示。谢谢!如果需要有关我的配置的更多信息,请告诉我!

答案1

我该解除这个<Directory />阻碍吗?

当然!这绝对是可以在服务器级别而不是在虚拟主机中处理的事情。

这只不过是 PHP,所以我猜没有理由保留 cgi 块和别名。

用核武器攻击它。

我猜我也可以摆脱文档的内容。

删除它。它在那里,因此您可以使用新安装的 Web 服务器浏览系统的文档。这是一个可爱的例子,但在我看来,它真的不属于默认配置文件。

在您提议的配置文件上:看起来不错!我提出的一个建议是,如果您不使用文件,请将AllowOverride All目录块中的更改为- 如果您使用文件,我建议删除它们并将其配置拉入目录块。(AllowOverride None.htaccess.htaccess请参阅此处了解我为什么这么说

相关内容