Re: Странности с регэкспами в локейшне
Валентин Бартенев
vbart at nginx.com
Thu Jan 17 14:48:14 UTC 2013
On Thursday 17 January 2013 18:45:55 Валентин Бартенев wrote:
> 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 ?
>
А нет, valid_referers тут скорее не причем. Значит что-то ещё.
--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru