我需要根据查询字符串参数限制对某些文件的访问。我有一个 NGINX 代理服务器,它位于其他几个 nginx Web 服务器的前面,用于负载平衡。我已决定在代理服务器级别强制执行此查询字符串参数,以合并配置更改。这给我的设置增加了一些复杂性,因为请求不能被困在 if 中,因为它需要被发送到上游。
server {
listen 443;
# SSL Settings
server_name staging.xxxx.com;
location / {
proxy_pass http://webdav-cluster;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
# Unless the correct application token is passed in as a query parameter
# then deny access.
location ~ \/protected\/.*txt$ {
if ($arg_secret != abc) {
return 403;
}
proxy_pass http://webdav-cluster;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
有没有办法将这 4 个代理行存储在一个位置或变量中,然后用一行在内部重定向到该位置?我也可以在不同的虚拟主机中使用相同的设置。