我正在使用Nginx map指令来检索http param的值并将其放入另一个变量中,该变量将用于与ldap服务器进行基本身份验证(使用nginx-auth-ldap)。 问题是,根据我的调试日志,我的地图总是选择默认值。 这是我的配置:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
map $args $groupe_ldap {
default "default_group";
include /opt/nginx/appli.conf;
}
ldap_server my_ldap_server {
url ldap://somehost:someport/ou=xxx,dc=yyy,....;
binddn "...";
binddn_passwd "...";
require group "cn=$groupe_ldap,...";
group_attribute member;
group_attribute_is_dn on;
require valid_user;
}
server {
error_log /opt/nginx/log/debug.log debug;
listen 8243;
server_name myhost;
more_clear_input_headers 'X-Forwarded-For';
auth_ldap "Forbidden";
auth_ldap_servers my_ldap_server;
if ($request_method !~ ^(GET|OPTIONS|POST)$ ) {
return 403;
break;
}
location ~ ^(/monitor(.*)) {
if ($arg_appli = "") {
return 403;
break;}
rewrite ^/monitor.* /$arg_appli?;
proxy_set_header Host myhost:myport;
root html;
index index.html;
break;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}}
我的appli.conf包含:
appli=1 ESB_SUPERADMIN;
问题是,在使用此网址时,我总是会使用default_groupe而不是ESB_SUPERADMIN:http://myhost:myport/monitor?appli=1。
我的配置有问题吗?
感谢您的帮助。