NGINX位置重写

时间:2014-11-18 19:37:02

标签: nginx url-rewriting mapserver

鉴于以下网址,我如何让NGINX自动将URL的最后部分(不是GET参数,而是基本网址的最后一部分 - myMap )自动传递给fastcgi_param SCRIPT_FILENAME?

网址:

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; 
    }

感谢。

1 个答案:

答案 0 :(得分: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; 
}

请注意,此类位置在请求处理期间具有特定优先级。