我正在嘗試使用nginx是 - 調用後端進行身份驗證,如果響應成功,我將重定向到網站1(例如-google .com),如果身份驗證失敗,我將重定向到website2(例如facebook)。Nginx的錯誤 - 開始nginx:nginx:emerg unknown「狀態」變量
下面是我nginx.conf-
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'[===>$status] $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/default.conf;
}
的default.conf文件如下 -
server {
listen 80 default_server;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location/{
# root /usr/share/nginx/html;
# index index.html index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://backend_ip_Address;
set $my_var 0;
if ($status = "200"){
set $my_var 1;
}
#if($status = 4xx) {
# set $my_var 2;
#}
if ($my_var = 1){
proxy_pass http://www.google.com;
}
if ($my_var = 2) {
proxy_pass http://www.facebook.com;
}
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我現在面臨的問題是,當我試圖執行sudo的服務nginx的重啓有了這個配置,我得到以下錯誤 - 開始nginx:nginx:[emerg]未知「狀態」變量
相同的$狀態也存在於nginx.con f日誌配置,並正確記錄響應代碼,如301,200等。但相同的狀態變量在default.conf文件中不起作用。任何幫助我做錯了什麼?
我試着用body_bytes_sent頭替換狀態,它的工作原理。
通過谷歌搜索https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=nginx++unknown+%22status%22+variable只有相關的信息是https://www.drupal.org/node/2738983但沒有太多的幫助來解決這個問題。
感謝亞歷山大對你的迴應。我的用例如下 - 我將用nginx和用戶憑證(我上面的帖子中的proxy_pass http:// backend_ip_Address的東西)來調用一個認證模塊。 如果身份驗證成功(200),那麼我將調用另一個服務來獲取我的數據。 如果它是未經授權的(301)我需要將此信息發回給調用者。 任何關於如何實現這一點的建議。 – user220985
閱讀http://nginx.org/en/docs/http/ngx_http_auth_request_module.html –
TLDR:您應該爲auth配置單獨的位置併爲受保護的位置添加auth_request指令 –