我想$sub
有条件地设置依赖于$request_uri
和的变量$host
。
map $request_uri $sub {
default front;
~^/api/.* api;
~^/rest/.* rest;
}
map $host $sub {
hostnames;
#default $sub; # Tried, no success
ping.* ping;
admin.* admin;
}
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_X_SUB $sub;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location / {
try_files $uri $uri/ /index.php;;
}
}
我以为如果主机名不在列表中,nginx 将不会覆盖$sub
,但不幸的是它只是将其清空。map $host $sub
$sub
因此基本上应该像$host
“ping”或“admin”一样进行$sub
相应设置。如果主机名不匹配,则检查$request_uri
。
知道如何存档该声明吗?
编辑:扩展了配置。