合并nginx中的两个位置块

时间:2013-08-19 06:49:26

标签: nginx location rewrite

我想在我的nginx中合并2个位置块,以便我可以防止不必要的复制粘贴和复制 以下面的块为例

location ~ \.php$ {
....
}

location ~ ^/somedirectory/(.+\.php)$ {
....
}

这里两个位置块都包含精确数据

我如何修改

location ~ \.php$ {

这样它甚至可以用于子目录

我认为正则表达式应该在这里使用? 请有人指导我吗

此致

1 个答案:

答案 0 :(得分:0)

为避免位置块中的nginx重复使用nginx包含OR使用嵌套位置块 - 嵌套位置块示例如下...

    location / {
        proxy_pass http://mywebfeservers;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_set_header Host $http_host;
        proxy_set_header X-Request-ID $uuid;
        proxy_set_header Via $via;

        location /aaa {
            # proxy_pass is not inherited, unsure about proxy_http_version
            proxy_pass http://mywebfeservers;
            proxy_http_version 1.1;
            # Prevent caching
            if_modified_since off;
        }
    }

此处所有位置都设置了这些不同的标头。只有/ aaa位置可以防止缓存但是它仍然使用相同的头而不重复配置。遗憾的是,你必须重复代理传递,因为继承不能与代理传递指令一起使用(出于我不知道的原因)。