2016-01-26 2 views
0

Я столкнулся с небольшим взломом с try_files в сочетании с proxy_pass (или псевдоним, если на то пошло).Nginx Proxy_pass try_files drop to location handler

Текущая конфигурация:

location /staticsrv { 
    alias /var/www/static/trunk/; 
    #proxy_pass http://static.localtest.nl/; 
} 
location ~ ^/staticsrv/images/gallery/(.*)$ { 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite ^(.*)$ /index.php/?c=media&m=index&imag=$uri; 
} 

Однако для каждого файла он потеряется в правила перезаписи, поскольку она не существует. Есть ли «трюк» (прочтите правильную конфигурацию), чтобы исправить мое несчастье? Или это просто невозможно? Оба домена в конечном итоге будут на одном сервере, чтобы мы могли работать с псевдонимами и proxy_pass.

Заранее спасибо

ответ

0

Ваш location ~ ^/staticsrv/images/gallery/(.*)$ нужен root или alias построить локальный путь для try_files попробовать. Кроме того, вам не обязательно нужно регулярное выражение здесь:

location /staticsrv/images/gallery/ { 
    alias /var/www/static/trunk/images/gallery/; 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite^/index.php/?c=media&m=index&imag=$uri last; 
} 

proxy_pass не будет работать с try_files как один сделок с удаленным содержимым, а другой с местным содержанием.

Я стараюсь избегать использования alias и try_files в том же блоке местоположения из-за this open bug.

Возможная работа вокруг будет использовать другой промежуточный URI, который близко соответствует корень документа:

location /staticsrv/images/gallery/ { 
    rewrite ^/staticsrv(.+)$ /trunk$1 last; 
} 
location /trunk { 
    internal; 
    root /var/www/static; 
    try_files $uri @img_proxy; 
} 
location @img_proxy { 
    rewrite^/index.php/?c=media&m=index&imag=$uri last; 
} 
Смежные вопросы