nginx中的嵌套位置

gee*_*rap 7 location reverse-proxy nginx proxypass

嗨,我正在努力让以下工作!

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

http://example.com/admin/1http://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;
        }

}
Run Code Online (Sandbox Code Playgroud)

目前,抛出一个错误:

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
Run Code Online (Sandbox Code Playgroud)

Pat*_*Lee 18

您应该/admin/1/在内部位置块中使用,因为内部URL不与外部URL相关.您可以看到这是基于您包含的错误消息中的以下代码段的问题...

location "1/" is outside location "/admin/"
Run Code Online (Sandbox Code Playgroud)

  • 我有点困惑...如果内部 URL 与外部 URL 无关,那么嵌套位置的目的是什么...? (9认同)
  • 内部“location”块是否继承了外部块的其他属性,例如“proxy_read_timeout”或“proxy_pass”? (5认同)
  • 使用现代文本编辑器并使用多个光标同时更改所有行 (2认同)