Re: Странности с регэкспами в локейшне
Валентин Бартенев
vbart at nginx.com
Thu Jan 17 14:45:55 UTC 2013
On Thursday 17 January 2013 17:58:47 Михаил Монашёв wrote:
> Здравствуйте.
>
> nginx version: nginx/1.3.11
> configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I
> /usr/local/include' --with-ld-opt='-L /usr/local/lib'
> --conf-path=/usr/local/etc/nginx/nginx.conf
> --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
> --error-log-path=/var/log/nginx-error.log --user=www --group=www
> --with-debug --with-file-aio
> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
> --http-scgi-temp-path=/var/tmp/nginx/scgi_temp
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp
> --http-log-path=/var/log/nginx-access.log --with-http_image_filter_module
> --with-http_stub_status_module --with-pcre
>
> Вот такой конфиг
>
> location ~* "^/([a-z0-9\-\.]+)/(.*)" {
> proxy_pass http://$1:80/$2;
> proxy_set_header Host $1;
> proxy_set_header Referer "http://$1/";
> proxy_set_header X-Real-IP "";
> proxy_set_header Cookie "";
> proxy_ignore_headers X-Accel-Redirect
> X-Accel-Expires X-Accel-Limit-Rate X-Accel-Buffering X-Accel-Charset
> Expires Cache-Control Set-Cookie;
>
> proxy_hide_header Location;
> proxy_hide_header Set-Cookie;
> proxy_hide_header WWW-Authenticate;
>
> proxy_intercept_errors on;
> error_page 301 302 400 401 402 403 404
> 405 406 407 408 409 410 411 412 413 414 415 416 417 422 423 424 425 426
> 449 500 501 502 503 504 505 506 507 509 510 = @zero;
>
> proxy_temp_path /optcache3/proxy-tmp;
> proxy_cache_key "$1/$2";
> proxy_cache optcache3;
>
> image_filter test;
> image_filter_buffer 10M;
>
> }
>
> location / {
> return 403;
> }
>
> location @zero {
> return 204;
> }
>
> приводит в ошибкам:
> 2013/01/17 17:47:08 [error] 1380#0: *1290729 no host in upstream ":80/",
> client: 65.55.215.62, server: i99.beon.ru, request: "GET
> /images5.fanpop.com/image/photos/31100000/Sunggyu-infinite-EC-9D-B8-ED-94-
> BC-EB-8B-88-ED-8A-B8-31133110-245-182.gif HTTP/1.1", host: "i99.beon.ru"
>
> т.е. в $1 почему-то хост теряется. Есть выше в конфиге ещё один
> локейшн с регэкспами, но он ведь выше и потому должен срабатывать
> раньше.
>
> Причём, если я запрос повторяю, то картинка открывается нормально.
>
[...]
Вероятно в конфигурации есть ещё какая-нибудь директива с регулярным выражением,
которая наследуется с уровня выше и тоже отрабатывает в этом location-е.
Подозреваю valid_referers ?
--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru