【问题标题】:Merging two location blocks in nginx在 nginx 中合并两个位置块
【发布时间】:2013-08-19 06:49:25
【问题描述】:

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

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

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

这两个位置块都包含准确的数据

如何修改

location ~ \.php$ {

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

我认为这里应该使用正则表达式? 谁能指导我一下

问候

【问题讨论】:

  • 我相信它应该已经,正则表达式应该匹配任何 php,即使在子目录中,只需删除子目录位置。

标签: nginx location rewrite


【解决方案1】:

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

    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 位置可以防止缓存,但是它仍然使用相同的标头而不重复配置。遗憾的是,您必须重复代理传递,因为继承不适用于代理传递指令(原因我不知道)。

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2015-06-11
    相关资源
    最近更新 更多