nginx中的嵌套位置

Posted

技术标签:

【中文标题】nginx中的嵌套位置【英文标题】:Nested locations in nginx 【发布时间】:2016-04-22 17:51:45 【问题描述】:

您好,我正在尝试执行以下操作!

我基本上是在尝试通过这两个 URL 中的任何一个将以下 URL 传递给 proxy_pass 指令:

http://example.com/admin/1 或 http://example.com/admin/2/

我有以下配置:

location /admin/ 

        # Access shellinabox via proxy
        location 1/ 
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://example.com;
        


此时抛出错误:

2016/01/17 15:02:19 [emerg] 1#1: location "1/" is outside location "/admin/" in /etc/nginx/conf.d/XXX.conf:37
nginx: [emerg] location "1/" is outside location "/admin/" in /etc/nginx/conf.d/XXX.conf:37

【问题讨论】:

【参考方案1】:

您应该在内部位置块中使用/admin/1/,因为内部 URL 与外部 URL 无关。您可以根据包含的错误消息中的以下 sn-p 看到这是问题...

location "1/" is outside location "/admin/"

【讨论】:

使用现代文本编辑器并使用多个光标同时更改所有行 我有点困惑...如果内部 URL 与外部 URL 不相关,那么嵌套位置的目的是什么...? 内部 location 块是否继承外部块的其他属性,例如proxy_read_timeoutproxy_pass?

以上是关于nginx中的嵌套位置的主要内容,如果未能解决你的问题,请参考以下文章

嵌套在 Doctrine2 中的位置

显示嵌套树中的前两个位置

Bookshelf.js / Knex.js 嵌套在单个查询中的位置

NestJS 中的 TypeORM - 如何在实体中获取 MySQL 嵌套对象并对子关系进行“位置”查询?

nginx位置波浪号

为啥 nginx 会忽略位置上下文中的 proxy_read_timeout?