我需要在特定的测试环境中提供一些静态数据。我正在尝试执行以下操作:
server {
include listen;
include listen_https;
server_name myprodserver
server_name mytestserver
location / {
do something here anyway
}
if ($server_name = "mytestserver") {
location /loc/ {
alias /usr/lib/myroot;
}
}
}
我收到一个错误:
nginx:[emerg] mypath 中不允许使用“location”指令……
那么我该如何用其他方式来做呢?
答案1
注意 nginx 指令可以使用或不使用的上下文。您不能在块中使用location
或alias
指令if
。另外,您需要检查$http_host
变量而不是$server_name
。我看到的唯一不定义第二个块的方法server
是定义替代根:
location /loc/ {
if ($http_host = mytestserver) {
root /usr/lib/myroot;
}
}
并将您的静态文件放入/usr/lib/myroot/loc/
。
或者,您可以重命名myroot
为loc
(反之亦然):
location /loc/ {
if ($http_host = mytestserver) {
root /usr/lib;
}
}