2014-11-18 3 views
0

С помощью приведенного ниже URL-адреса, как я могу использовать NGINX, автоматически передать последнюю часть URL-адреса (а не GET Params, но последний фрагмент базового URL-адреса - myMap) на fastcgi_param SCRIPT_FILENAME?NGINX location rewrite

URL-адрес:

http://localhost/mapserver/myMap?&LAYERS=base.... 

NGINX конфигурации:

location /mapserver/ { 
     fastcgi_pass unix:/tmp/mapserver.sock; 
     fastcgi_index mapserv?*; 
     fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/mapserv?map=/mapfiles/myMap.map; 
     include fastcgi_params; 
    } 

Спасибо.

ответ

2

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

Устанавливает параметр, который должен быть передан на сервер FastCGI. Значение может содержать текст, переменные и их комбинацию. Эти директивы наследуются от предыдущего уровня тогда и только тогда, когда не существует директив fastcgi_param, определенных на текущем уровне.

Таким образом, вы можете использовать место с регулярным выражением и захвата группы:

location ~ /mapserver/(.*)$ { 
    fastcgi_pass unix:/tmp/mapserver.sock; 
    fastcgi_index mapserv?*; 
    fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/mapserv?map=/mapfiles/$1.map; 
    include fastcgi_params; 
} 

Имейте в виду, что этот вид имеет место особый приоритет во время обработки запроса.

+0

Спасибо. Я смог заставить это работать. – Matt