根据默认文件的扩展名应用NGINX位置。

时间:2014-01-25 01:58:58

标签: nginx

我正在尝试在NGINX中创建一个仅针对特定文件类型触发的备用位置。具体来说,我让NGINX充当主要服务于PHP文件的服务器的代理。但是,有一堆文件夹也有ASPX文件(超过120个),我需要在提供它们时使用不同的配置(不同的缓存规则,不同的Modsecurity配置等)。

NGINX成功检测到文件类型并在专门列出文件名时应用备用位置,但是当ASPX文件是文件夹中的默认文件并且URL仅以斜杠结尾时它正在中断。当发生这种情况时,它只是应用根位置配置。有没有办法检测索引文件的扩展名并应用备用位置,即使没有专门输入索引文件的名称?

server {
     listen 80;
     server_name mysite.com;

     # serves php files and everything else
     location / {
            #general settings applicable to most files
            proxy_pass http://@backend;                
     }

     #serves .Net files
     location ~* \.(aspx|asmx) {
            #slightly different settings applicable to .Net files
            proxy_pass http://@backend;
     }
}

如果文件夹中有一个名为“default.aspx”的文件被配置为索引,如果我输入url为mysite.com/folder/default.aspx,则上述配置可以正常工作,但如果我只输入基本位置输入它作为mysite.com/folder,即使它提供完全相同的default.aspx文件。

我发现的唯一解决方案是更改location指令以通过文件夹名称而不是文件扩展名来识别,但这不能很好地扩展,因为服务器上有超过120个受影响的文件夹而且我是最终得到一个庞大的conf文件。

当文件没有在URL中明确命名时,有没有办法按文件扩展名指定位置?我可以在应用位置之前测试文件夹索引文件以确定其扩展名吗?

0 个答案:

没有答案