Назад | Перейти на главную страницу

If I have a DocumentRoot specified in my VirtualHost, do I need a <directory> указано?</directory>

Я использую несколько выглядящий по умолчанию файл VirtualHost, который я настроил некоторое время назад (до того, как я получил много знаний о том, как это работает), и я не совсем уверен, что мне следует хранить. Я не хочу просто пробовать что-то, потому что настроить виртуальную машину со всем этим материалом было бы сложно, а текущая конфигурация находится в производственной среде, поэтому метод проб и ошибок на самом деле не вариант. Вот файл с именами, измененными для защиты невиновных:

<VirtualHost *:80>
    ServerAdmin dummy@example.com
    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 с комментарием «В настоящее время это нарушает конфигурации некоторых пакетов Debian для веб-приложений». Должен ли я раскомментировать эту версию и удалить ее с моего виртуального хоста?

  2. Это не что иное, как PHP, поэтому я предполагаю, что нет смысла хранить блок cgi и псевдоним.

  3. Думаю, я также могу избавиться от doc прочее. Я даже не совсем уверен, для чего это нужно, поэтому бонусные баллы (не совсем), если вы можете объяснить, для чего они будут использоваться в «нормальной» настройке.

Итак, если я прав во всем, о чем думаю, мой новый файл vhost может выглядеть так:

<VirtualHost *:80>
    ServerAdmin dummy@example.com
    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>

Любые другие советы очень приветствуются. Спасибо! Пожалуйста, дайте мне знать, если потребуется дополнительная информация из моей конфигурации!

Должен ли я избавиться от <Directory /> блок?

Конечно! Это определенно то, с чем вы можете справиться на уровне сервера, а не на виртуальном хосте.

Это не что иное, как PHP, поэтому я предполагаю, что нет смысла хранить блок cgi и псевдоним.

Ядерная бомба.

Думаю, я также могу избавиться от документации.

Ядерная бомба. Он там, чтобы вы могли использовать свой недавно установленный веб-сервер для просмотра документации вашей системы. Это симпатичный пример, но, на мой взгляд, он не относится к конфигурационному файлу по умолчанию.

В предложенном вами конфигурационном файле: выглядит хорошо! Я бы порекомендовал изменить AllowOverride All в вашем блоке каталога, чтобы AllowOverride None если вы не используете .htaccess файлы - и если вы используете .htaccess файлы, я бы рекомендовал уничтожить их и вытащить их конфигурацию в блок каталогов. (см. здесь, чтобы узнать, почему я говорю это)