Wampserver 403 на именованных виртуальных хостах вне / www

Wampserver сообщает, что доступ запрещен, когда я пытаюсь создать виртуальный хост за пределами каталога c: / wamp / www /. Я могу сделать один штраф в этом каталоге. Даже создание символической ссылки на папку работает, но я бы не стал использовать символические ссылки. Почему это не работает?

Вот код, который я использую в конце httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>  
DocumentRoot "c:/wamp/www" 
ServerName localhost 
ServerAlias localhost 
</VirtualHost> 

<VirtualHost *:80>
ServerName local.cascade
DocumentRoot c:/wamp/www/cascade/
</VirtualHost>

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
</VirtualHost>

<Directory "m:/Work/New MD9.ca/site/">
    Order Allow,Deny
    Allow from All
</Directory>

«Каскад» VH работает отлично.

 Moss03 июн. 2012 г., 17:11
Я видел, что для пользователя и группы установлено значение "демон" в httpd.conf, но в диспетчере задач он говорит, что httpd.exe работает как SYSTEM. Хотя это действительно не имеет значения.
 Moss02 июн. 2012 г., 04:26
Что такое учетная запись пользователя веб-сервера и как мне разрешить ему доступ?
 sarnold02 июн. 2012 г., 04:25
Не все системы по умолчанию разрешают доступ к учетной записи пользователя веб-сервера.
 Moss02 июн. 2012 г., 04:18
Конечно, почему нет? Для чего нужно разрешение?
 sarnold02 июн. 2012 г., 04:08
Разрешения вашей файловой системы разрешают доступ?

Ответы на вопрос(5)

но мне удалось ее решить, посмотрев на этот вопрос.

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

Я думаю, что в решении следует упомянуть две вещи: во-первых, обеспечение безопасности не ставится под угрозу, а во-вторых; понимание различий в конфигурации контроля доступа между версиями Apache 2.2 и 2.4.

Ensuring security isn't compromised

Закомментируем предложенные строки:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

Означает, что вы удаляете строгую безопасность по умолчанию, применяемую ко ВСЕМ каталогам на вашем компьютере, насколько я понимаю. Кто-то может создать конфигурацию, указывающую на вашC:\very\sensitive\information каталог и обслуживать контент оттуда на веб-сайт (что, скорее всего, будет проблемой на общем хосте). Интересно, что над этим блоком сделан следующий комментарий:

# First, we configure the "default" to be a very restrictive set of 
# features.

Тогда под этим блоком:

# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.

Имеет смысл заблокировать все, а затем условно разблокировать для каждого каталога.

Я придумал следующее, которое указывает на местоположение на моей машине, где будут жить все мои сайты (обслуживаемые через виртуальные хосты Apache). Это сразу следует<Directory "d:/wamp/www/"></Directory> блок.

<Directory "d:/wamp/sites/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

Затем в каждой конфигурации / псевдониме вашего виртуального хоста вы можете установить конфигурацию, которая применяется к этому каталогу.

Difference in access control configuration

Настройка управления доступом в более поздних версиях Apache изменилась.

Что раньше было:

Order allow,deny
Allow from all

Теперь должно быть:

Require all granted

Для получения дополнительной информации:http://httpd.apache.org/docs/current/upgrading.html

 13 февр. 2018 г., 17:27
Require all granted сделал трюк для меня

но ни одна из них не сработала, попробуйте выполнить следующие дополнительные действия:

1) Убедитесь, что DocumentRoot и & lt; Directory & gt; местаare the same!

2) Дважды проверьте «имя_сервера»; правописание домена в вашем & lt; VirtualHost & gt; теги, а также проверьте правильность написания домена в файле HOST (windows \ system32 \ drivers \ etc \ hosts):

Пример:

<VirtualHost *:80>
    DocumentRoot "D:/vhost_directory/website_directory"
    ServerName mywebsite.local
    <Directory "D:/vhost_directory/website_directory">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3) Проверьте синтаксис файлов conf:

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

4) Исправьте ошибки в файле conf, пока не получите результат:

Syntax OK
,

5) Обновить кэш доменных имен (должен запускать консоль от имени администратора):

net stop dnscache
net start dnscache

6) Перезапустите службу Apache или Перезапустите все службы на WAMP.

Решение Вопроса

мне следовало бы посмотреть на http.conf более внимательно. Это не так долго, в основном комментарии. Проблемной частью было это.

# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#

<Directory />
    AllowOverride none
    Require all denied
</Directory>

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

Я думал<Directory "m:/Work/New MD9.ca/site/"> немного должен был позаботиться об этом, но я думаю, нет.

 18 авг. 2014 г., 09:40
Отличное решение! Я также нашел это здесьhttp://reanweb.com/wordpress/step-step-guide-create-virtual-hosts-using-wamp/, В случае, если кто-то попытается найти весь процесс
 16 янв. 2016 г., 12:48
@Moss, хотя вы не беспокоитесь о безопасности, так как это тестовый сервер, но я бы сказал, что вы можете оставить этот тег каталога без комментариев и другой тег каталога с путем к вашей папке vhost, но используйте & quot; AllowOverride все & Quot; вместо "AllowOverride none", это сделало бы его безопасным и пригодным для использования.

что вопрос устарел, и у вас все получилось, но я столкнулся с этой проблемой и решил ее, не удаляяRequire all denied тег.

Вам просто нужно добавитьRequire local (или жеRequire all для онлайн-доступа) тег к тегу каталога. например

<VirtualHost *:80>
    ServerName local.md9
    ServerAlias local.md9
    DocumentRoot "m:/Work/New MD9.ca/site/"

    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
        Require local
    </Directory>
</VirtualHost>

Вы можете увидеть то же правило, объявленное в каталоге DocumentRoot в httpd.conf

<Directory> тег должен быть внутри<VirtualHost *:80>

как это:

<VirtualHost *:80>
ServerName local.md9
ServerAlias local.md9
DocumentRoot "m:/Work/New MD9.ca/site/"
    <Directory "m:/Work/New MD9.ca/site/">
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

Также обратите внимание, что за пределами стандартной папки www вы должны использовать require вместо allow

<Directory />
    AllowOverride none
    Require all denied
</Directory>

Ваш ответ на вопрос