使用nginx 1.2.1我可以使用add_header添加多个头文件,如下所示:
server { listen 80; server_name localhost; root /var/www; add_header Name1 Value1; <=== HERE add_header Name2 Value2; <=== HERE location / { echo "Nginx localhost site"; } }
结果
GET / HTTP/1.1 200 OK Name1: Value1 Name2: Value2
不过,当我在location内使用add_header指令时, server下的其他add_header指令被忽略
server { listen 80; server_name localhost; root /var/www; add_header Name1 Value1; <=== HERE add_header Name2 Value2; <=== HERE location / { add_header Name3 Value3; <=== HERE add_header Name4 Value4; <=== HERE echo "Nginx localhost site"; } }
结果
GET / HTTP/1.1 200 OK Name3: Value3 Name4: Value4
该文档说, server和location都是有效的context ,并没有说明在其中使用add_header防止使用它。
问题1:你知道这是一个错误还是预期的行为,为什么?
问题2:你看到其他的select,比使用HttpHeadersMoreModule模块来解决这个问题吗?
这是预期的行为。 与当前级别上定义的add_header指令一样, add_header指令与nginx中的所有其他数组types指令非常相似,都是从前一级inheritance而来的。
如果你想让nginx在location /添加所有的头文件,你必须把它们全部列在location /
location / { add_header Name1 Value1; add_header Name2 Value2; add_header Name3 Value3; add_header Name4 Value4; return 200 ""; }
如果你需要一种方法来在一个地方列出大量的头文件,你可以使用include指令。 在这里看到文档。