Re: Циклический реврайт

Igor Sysoev igor на sysoev.ru
Чт Июл 29 19:23:36 MSD 2010


On Thu, Jul 29, 2010 at 05:11:31PM +0200, Anton Bessonov wrote:

> Захотелось (вернее пришлось) вынести часть под отдельного юзера.
> 
> Первый энджин:
> 
> server {
>     listen 80;
>     server_name host.ru;
>     error_log  /tmp/error.log;
> 
>     location ~* ^.+.(html|gif|jpg|png|css|zip|rar|exe|com|ico)$ {
>         expires 30d;
> 
>         proxy_buffering off;
>         proxy_pass http://127.0.0.1:8049;
>     }
> 
>     location / {
>        [...]
> 
> Второй энджин:
> 
> user myuser;
> worker_processes  4;
> 
> error_log  /tmp/error2.log;
> 
> pid /var/run/nginx_myuser.pid;
> 
> events {
>         worker_connections  1024;
> }
> 
> http {
>     include       /usr/local/nginx/mime.types;
>     default_type  application/octet-stream;
> 
>     sendfile        on;
>     keepalive_timeout  65;
> 
>     server {
>         listen 127.0.0.1:8049;
> 
>         location / {
>             rewrite (.*)/favicon.(ico|png) /favicon.$2 last;
>             root /home/myuser;
>         }
>     }
> }
> 
> 
> Если (.*) заменить на (.+), то работает, а так:
> 
> 2010/07/29 15:01:37 [error] 3547#0: *24 rewrite or internal redirection 
> cycle while processing "/favicon.ico", client: 127.0.0.1, server: 
> host.ru, request: "GET /favicon.ico HTTP/1.0", host: "127.0.0.1:8049"
> 
> 
> как лечить иначе?

Потому что "/favicon.ico" попадает под "(.*)/favicon.(ico|png)".

         root /home/myuser;

         location = /favicon.ico { }
         location = /favicon.png { }

А лучше перестать думать в стиле rewrite'ов:

         location ~ /favicon.(ico|png)$ {
              alias  /home/myuser/favicon.$1;
         }


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru