server 块:
root /aaa/bb大带宽服务器b;
location = / {
include location.conf;
index html/index.html;
}
location / {
include location.conf;
proxy_pass http://127.0.0.1:8080;
}
按理来说, 第一个 location 带等于号=,应该是精确匹配,为啥我访问 www.hostname.com 的时候,却走了第二个 location 呢?
我把第二个 location 注释掉的话,能正常访问 index.html
而且 8080 端口的日志显示:
"HTTP/1.1 GET /html/index.html" - 404 Not Found
给我感觉像是第一个 location 把请求路径修改,然后丢给第二个 location
覆盖?不晓得如何精确
可以这样用么?我一般都是 root index 一起设置,index 也可以带路径啊。。。
我 index 设置了绝对路径感觉也不行。。。
比如 index /aaa/bbb/html/index.html ,那么那就会给 8080 端口请求这个 /aaa/bbb/html/index.html
总觉得是 location 1 的结果出来之后又跑到 location2 了
我是说 root /aa/bb/html ; index index.html;
交换下两个 location 顺序呢?
还是不行,我想办法把第二个 location 穷举一下,让他匹配不上第一个好了
index 的问题
http://nginx.org/en/docs/http/ngx_http_index_module.htmlshould be noted that using an index file causes an internal redirect, and the request can be processed in a different location.
感谢!我看了半天的 location 文档,没想到在这里
那看来我的需求是达不成了 我看看别的办法
嗯 似乎只有第二个表示默认的能匹配空路径,精确匹配的必须带 /,话说对空路劲加上一个 location 写一个正则^$似乎可行
7L 给了个答案,问题出在 index 上,而不是 location
The ngx_http_index_module module processes requests ending with the slash character (‘/’).
我看到这句随口说的,也不太懂。也许空路劲可以用 try file
感谢 我又加了一个 location 专门处理 index redirect 过后的请求,这把彻底 OK 了
在 append 里
第一个问题是两个规则都匹配到了,但是以最后一个匹配也就是第二个为准吧,可以限制匹配到了就不往下匹配
index 是默认路径,但是没有指明 root 或 alias,我觉得这种写法,本身就是给自己挖坑
没事 现在搞定了
你这头像是吞食天地啊 我特别喜欢