我正在与Nginx进行合作,以反向代理我的应用程序以访问客户网络之外的Internet。
我设法使其正常运行,限制了需要公开的URL等,但仍有一件事要完成。
我想基于用户名限制用户访问。但是,我不想为每个要阻止的用户创建一个if,而是使用通配符,因为我要阻止的所有用户都以一个特定的字符串结尾:@saspw
我的/etc/nginx/conf.d/reverseproxy.conf的样本
server {
listen 80; # Proxy trafic for SAS Visual Analytics Transport Services on HTTP
server_name mcdonalds-va-reverseproxy.cons.sashq-r.openstack.sas.com;
if ($remote_user = '*@saspw'){
return 401;
}
location /SASVisualAnalyticsTransport {
proxy_pass https://mtbis.mcdonalds.com.au:8343/SASVisualAnalyticsTransport/;
}
}
在$ remote_user if中,我希望其用户名以@saspw结尾的所有用户都收到401错误(稍后将更改为404)。
仅当我输入整个用户名(例如joe @ saspw)时,它才起作用。使用通配符(* ,?)无效。
有没有办法让$ remote_user那样解决通配符?
谢谢乔
map $remote_user $is_denied {
default 0;
"~.*@saspw" 1;
}
server {
listen 80; # Proxy trafic for SAS Visual Analytics Transport Services on HTTP
server_name mcdonalds-va-reverseproxy.cons.sashq-r.openstack.sas.com;
if ($is_denied){
return 401;
}
location /SASVisualAnalyticsTransport {
proxy_pass https://mtbis.mcdonalds.com.au:8343/SASVisualAnalyticsTransport/;
}
}
它使您可以使用正则表达式。请注意,映射必须是外部server
指令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句