亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

小白,請教各位大佬!請問nginx中$status變量的問題各位有什么建議?

小白,請教各位大佬!請問nginx中$status變量的問題各位有什么建議?

千萬里不及你 2019-09-09 21:22:48
各位老師,今日準備入門nginx,結果還沒入門就栽了一個大跟頭T_T在nginx.conf中有這樣一段#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'#'$status$body_bytes_sent"$http_referer"'#'"$http_user_agent""$http_x_forwarded_for"';這里定義了日志的格式,其中$status變量引起了我的注意。查看access.log日志,我的確也看到了200404一類的狀態碼。我覺得這個變量就很有用了,比如說我代理了一個地址location/{proxy_passhttp://127.0.0.1:8000/;}我想獲得代理的這個地址返回的各種http狀態,我就可以通過$status來判斷。但是我嘗試返回這個變量時location/{if($status){return$status;}proxy_passhttp://127.0.0.1:8000/;}卻打印出來了:invalidreturncode"$status"inE:nginx/conf/nginx.conf:52如果我寫成:location/{if($status){return404;}proxy_passhttp://127.0.0.1:8000/;}則所有的請求都可以正常返回404,翻了一下nginix文檔,在HTTPCore模塊中沒有發現$status這個變量,那么我想請問下,這個變量是干什么用的?我怎樣才可以獲取到代理地址返回的狀態碼?謝謝~
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

httpcore里有$status。
不過看nginx文檔,關于return的部分,code的部分應該是不支持變量的。
另外,nginx是分不同phase依次執行的,if在rewritephase,proxy_pass在contentphase,所以if總是先于proxy_pass執行的,也就不可能拿到proxy_pass的statuscode。
                            
查看完整回答
反對 回復 2019-09-09
?
米脂

TA貢獻1836條經驗 獲得超3個贊

這個location里面是配置路由的啊,location是根據url來進行不同的定位,定位到不同的處理方式上,您這個$status不能當做他匹配的規則吧
                            
查看完整回答
反對 回復 2019-09-09
  • 2 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號