Web 如何基于子请求设置变量值

Web 如何基于子请求设置变量值,web,nginx,server,auth-request,Web,Nginx,Server,Auth Request,如果用户正确登录,我将尝试根据结果设置变量的值。我将把这个变量用于条件ssi。我正在使用auth_请求模块对用户进行授权。此授权适用于所有页面。我面临的问题是,对于401/403错误,NGINX将401传递给客户端。我想做的是显示一些页面(即使授权失败),但是为条件ssi设置变量(状态为subrequest) 配置文件 location / { set $auth_status 100; #Default Value error_page 401 403 $show_anyw

如果用户正确登录,我将尝试根据结果设置变量的值。我将把这个变量用于条件ssi。我正在使用
auth_请求模块
对用户进行授权。此授权适用于所有页面。我面临的问题是,对于401/403错误,NGINX将
401
传递给客户端。我想做的是显示一些页面(即使授权失败),但是为条件ssi设置变量(状态为subrequest)

配置文件

  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.  
  }

错误\u第401403页=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-
$uri/
中的try_文件以通过
index
指令防止内部重定向的注意事项(如果找到索引文件)。如果内部重定向传递到
location/
,将使用最后一个错误代码。

我想,您需要
auth\u request\u set
error\u page
指令。@AlexeyTen,我不想显示一些错误页面,我想用变量集显示请求的页面。谢谢@terra,我会尝试一下,让您知道!再次感谢terra。你的解决方案很有魅力。我的错误是没有将401/403错误转换为200。