Я спросил тот же вопрос к stackoverflow но потом я подумал, что это может быть больше связано с здесь.
в apache httpd.conf между VirtualHost
теги я поставил <LimitExcept>
выражение, подобное следующему:
<VirtualHost *:80>
ServerName geopreprod.xxx.com.tr
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://XXXXXXXX...
ProxyPassReverse / http://XXXXXXXX....
</VirtualHost>
а затем веб-сервер apache не запускается из-за следующей ошибки:
Syntax error on line 513 of XXXXX/httpd.conf:
deny not allowed here
Хотя там сказано <LimitExcept>
может использоваться в VirtualHost
тег в официальные документы почему я получаю эту ошибку?
в документах apache говорится:
Context: server config, virtual host, directory, .htaccess
Пока ваш <LimitExcept>
блок находится в контексте, допустимом для Allow
/Deny
директивы, тогда он будет работать нормально.
Если попробовать поставить даже голый Deny
править прямо в <VirtualHost>
контекст, вы увидите, что это отрицается таким же образом - <VirtualHost>
с Deny
в это запрещено, поэтому ни добавление <LimitExcept>
между ними.
Но фокус в том, что <LimitExcept>
, и некоторые другие типы блоков, например <IfModule>
, не изменяйте контекст директивы; вы никогда не увидите «предел» в списке допустимых контекстов в документации для директивы.
Есть только четыре контекста который может определять, разрешена ли директива:
<Location>
и <Files>
директивы типа тоже)В случае mod_authz_host
директивы (Order
, Allow
, и Deny
), они разрешены только в контексте каталогов и htaccess, поэтому они всегда будут ошибаться, если их нет в одном.
В вашем случае для этого виртуального хоста с обратным прокси-сервером нет расположения файловой системы, поэтому вы захотите использовать <Location>
блок (который является допустимым контекстом для Allow
/Deny
потому что он относится к типу контекста каталога):
<Location />
Order allow,deny
Allow from all
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
</Location>
О, и избавься от этого <Proxy *>
блок, поскольку он ничего не делает - <Location>
в любом случае имеет приоритет над ним, но это противоречит <LimitExcept>
ограничения .. так что это заставляет меня нервничать.
В сообщении об ошибке говорится, что Deny
не допускается в <LimitExcept>
блок.
Из другая часть документов: "Директивы, предоставленные mod_authz_host, используются в <Directory>
, <Files>
, и <Location>
разделы, а также файлы .htaccess ".