ЗдравствуйтеЕсть сайт который благополучно жил на серваке где Nginx (0.8) был установлен на обработку статики с проксированием динамики на Apache (2). Необходимо было сайт перенести на другой сервер. На новом сервере стоит Apache 2.2 + я поставил свежий Nginx. Сейчас на порту 80 живет Nginx который проксирует динамику Апачу на порт 8080.
Мне нужно закрыть директорию для доступа с определенных ip через htaccess.
На новом сервере с этим возникла проблема. Если я создаю в директории htaccess с директивами deny и allow то при попытке доступа к файлу
http://www.site.com/protected/1.php
вне зависимости от ip я получаю ошибку и запись в логах "Client denied by server configuration error in Apache".При этом если обращаться к этому файлу напрямую через Apache
http://www.site.com:8080/protected/1.php
то htaccess отрабатывает правильно и пускает нужные ip не пропуская другие.Ниже конфиг Nginx:
==========================
user apache;
worker_processes 4;
error_log logs/error.log;
pid logs/nginx.pid;events {
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1024;
gzip_http_version 1.1;
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css
application/x-javascript text/xml
application/xml application/xml+rss
text/javascript image/x-icon;server {
listen 80;
server_name www.site.com site.com 7.1.3.7;
access_log logs/host.access.log main;# serve static files
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
root /var/www/vhosts/www.site.com/httpdocs;
proxy_set_header Range "";
expires 30d;
}# pass requests for dynamic content to Apache
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Range "";
proxy_pass http://7.1.3.7:8080;
}
}
==========================Подскажите пожалуйста как это можно победить, я уже все локти искусал.
Модуль апача mod_rpaf-0.6 установлен ? Сконфигурирован ?Можно не отвечать, я знаю ответ.
----Не используйте 8080 порт на апаче. Используйте 127.0.0.1:80. При необходимости - 127.0.0.2:80 и т. д.
> Модуль апача mod_rpaf-0.6 установлен ? Сконфигурирован ?Да, установлен и настроен.
Ipшник определяется корректно
>> Модуль апача mod_rpaf-0.6 установлен ? Сконфигурирован ?
> Да, установлен и настроен.
> Ipшник определяется корректнокем определяется?
а что в логе апача
>>> Модуль апача mod_rpaf-0.6 установлен ? Сконфигурирован ?
>> Да, установлен и настроен.
>> Ipшник определяется корректно
> кем определяется?
> а что в логе апачаВ директории с htaccess лежит такой файл к которому я обращаюсь.
<?php
$ip = getenv('REMOTE_ADDR');
var_dump($ip);
?>Он показывает верный айпишник при отсутствии директив allow/deny из htaccess.
Логи Апача не смотрел.
>proxy_set_header X-Real-IP $remote_addr;
>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;Абсолютно никакого резона выставлять _оба_ X-заголовка _нет_.
Один написал, все остальные бездумно повторяют....
>>proxy_set_header X-Real-IP $remote_addr;
>>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> Абсолютно никакого резона выставлять _оба_ X-заголовка _нет_.
> Один написал, все остальные бездумно повторяют....Ок, но разве это решит проблему ?
Ps - Аналогичная проблема рассматривалась здесь:
https://www.opennet.ru/openforum/vsluhforumID8/6014.html
Победил заразу. Проблема была с модулем RPAF который некорректно работает в некоторых случаях.
Лечится установкой патченого модуля отсюда:
https://github.com/discont/mod_realip2/blob/master/INSTALL.mdВсем спасибо :-)
> Ps - Аналогичная проблема рассматривалась здесь:
> https://www.opennet.ru/openforum/vsluhforumID8/6014.htmlтам рассматривался модуль версии 0.5. 0.6 работает корректно.
>> Ps - Аналогичная проблема рассматривалась здесь:
>> https://www.opennet.ru/openforum/vsluhforumID8/6014.html
> там рассматривался модуль версии 0.5. 0.6 работает корректно.У вас корректно, у других - не всегда:
http://www.lexa.ru/nginx-ru/msg20706.html
http://forum.searchengines.ru/showthread.php?t=272073
>>> Ps - Аналогичная проблема рассматривалась здесь:
>>> https://www.opennet.ru/openforum/vsluhforumID8/6014.html
>> там рассматривался модуль версии 0.5. 0.6 работает корректно.
> У вас корректно, у других - не всегда:
> http://www.lexa.ru/nginx-ru/msg20706.html
> http://forum.searchengines.ru/showthread.php?t=272073Рассмотрим вторую ссылку:
>Заметил такую странную вещь, если есть .htaccess файл и я в корень сайта кладу например:
> order allow,deny
> allow from [ip с которого соединяюсь]
> deny from all
>
> Апач даёт Forbidden, хотя казалось бы указано allow from [ip с которого соединяюсь]В первой ссылке, если подняться к исходному сообщению, написано аналогичное:
>в .htaccess :
>Order Allow,Deny
>Deny From All
>Allow From 127.0.0.1
>Allow From 10.0.3.4
>Allow From 10.0.3.5
>Allow From 10.0.3.6
>
> .htaccess попадает какойто другой адрес и возникает 403Так вот, как правильно расписано в https://www.opennet.ru/openforum/vsluhforumID8/6014.html#17
это является ожидаемым и верным поведением, и не зависит от наличия или отсутствия модуля rpaf.
Дай дураку .... он и разобъет, и руки порежет.