У меня проблема с satisfy any
в server
или location
блокировка, в результате которой всем клиентам будет разрешен доступ, что не является ожидаемым поведением.
server {
listen 80;
server_name raar.my.domain;
satisfy any;
allow 192.168.1.0/24;
deny all;
auth_basic "Private";
auth_basic_user_file /etc/nginx/conf.d/avs.creds;
location / {
proxy_pass http://192.168.1.13:8085;
}
}
В этом состоянии я могу выполнить curl с внешнего хоста, и он передаст запрос прокси. Если я изменю any
к all
затем он фактически запускает механизмы доступа.
Это забивает мне голову, потому что ни allow
ни deny
ключевое слово появляется где угодно в пределах /etc/nginx
, поэтому я не знаю, какие другие обработчики доступа могли бы существовать, чтобы удовлетворить satisfy any
.
Журнал отладки ничего не показывает.
-V:
nginx -V
nginx version: nginx/1.2.7
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --add-module=/tmp/pubcookie_src/src/nginx
Хм, оказывается, это был pubcookie модуль плохо себя ведет.
Он возвращал NGX_OK на этапе доступа для сайтов, за которые он не отвечал, когда правильный ответ был NGX_DECLINED (а также возвращал его как int вместо ngx_int_t).
По этой причине satisfy any
был удовлетворен.