如果用户正确登录,我试图根据结果设置变量的值。我将这个变量用于条件ssi。我正在使用auth_request module
授权用户。此授权适用于所有页面。我面临的问题是,对于401/403错误,NGINX将401
传递给客户端。我想要做的是显示一些页面(即使授权失败),但为条件ssi设置变量(到子请求的状态)。
配置文件
location / {
set $auth_status 100; #Default Value
error_page 401 403 $show_anyway;
error_page 500 = /auth_fallback;
auth_request /auth_public;
auth_request_set $auth_status $upstream_status;
auth_request_set $show_anyway $request_uri;
}
location = /auth_public
{
proxy_pass http://localhost:8081;
proxy_pass_request_body off;
#return 200; #Tried this, but sub request doesn't fire.
}
答案 0 :(得分:1)
error_page 401 403 =200 ...
可以提供帮助。我测试了以下配置
ssi on;
location / {
set $auth_status 100;
auth_request /auth.php;
auth_request_set $auth_status $upstream_status;
error_page 401 403 =200 @process;
}
location @process {
try_files $uri =404;
}
location = /auth.php {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fastcgi_params;
}
请注意@process中的try_files - $uri/
droped以防止index
指令内部重定向(如果找到索引文件)。如果内部重定向传递给location /
,则将使用上一个错误代码。