国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

nginx rewrite log如何打開?

2024-08-30 12:23:41
字體:
來源:轉載
供稿:網友
  nginx通過ngx_http_rewrite_module模塊支持url重寫、支持if條件判斷,但不支持else。該模塊需要PCRE支持,應在編譯nginx時指定PCRE源碼目錄,nginx安裝方法。
  nginx rewrite指令執行順序:
  1、執行server塊的rewrite指令(這里的塊指的是server關鍵字后{}包圍的區域,其它xx塊類似)
  2、執行location匹配
  3、執行選定的location中的rewrite指令
  如果其中某步URI被重寫,則重新循環執行1-3,直到找到真實存在的文件
  如果循環超過10次,則返回500 Internal Server Error錯誤
  break指令
  語法:break;
  默認值:無
  作用域:server,location,if
  停止執行當前虛擬主機的后續rewrite指令集
  break指令實例:
  if ($slow) {
  limit_rate 10k;
  break;
  }
  if指令
  語法:if(condition){...}
  默認值:無
  作用域:server,location
  對給定的條件condition進行判斷。如果為真,大括號內的rewrite指令將被執行。
  if條件(conditon)可以是如下任何內容:
  一個變量名;false如果這個變量是空字符串或者以0開始的字符串;
  使用= ,!= 比較的一個變量和字符串
  是用——, ——*與正則表達式匹配的變量,如果這個正則表達式中包含},;則整個表達式需要用" 或' 包圍
  使用-f ,!-f 檢查一個文件是否存在
  使用-d, !-d 檢查一個目錄是否存在
  使用-e ,!-e 檢查一個文件、目錄、符號鏈接是否存在
  使用-x , !-x 檢查一個文件是否可執行
  if指令實例
  if ($http_user_agent —— MSIE) {
  rewrite ^(.*)$ /msie/$1 break;
  }
  if ($http_cookie ——* "id=([^;]+)(?:;|$)") {
  set $id $1;
  }
  if ($request_method = POST) {
  return 405;
  }
  if ($slow) {
  limit_rate 10k;
  }
  if ($invalid_referer) {
  return 403;
  }
  return指令
  語法:return code;
  return code URL;
  return URL;
  默認值:無
  作用域:server,location,if
  停止處理并返回指定狀態碼(code)給客戶端。
  非標準狀態碼444表示關閉連接且不給客戶端發響應頭。
  從0.8.42版本起,return 支持響應URL重定向(對于301,302,303,307),或者文本響應(對于其他狀態碼).
  對于文本或者URL重定向可以包含變量
  rewrite指令
  語法:rewrite regex replacement [flag];
  默認值:無
  作用域:server,location,if
  如果一個URI匹配指定的正則表達式regex,URI就按照replacement重寫。
  rewrite按配置文件中出現的順序執行。flags標志可以停止繼續處理。
  如果replacement以"http://"或"https://"開始,將不再繼續處理,這個重定向將返回給客戶端。
  flag可以是如下參數
  last 停止處理后續rewrite指令集,然后對當前重寫的新URI在rewrite指令集上重新查找。
  break 停止處理后續rewrite指令集,并不在重新查找,但是當前location內剩余非rewrite語句和location外的的非rewrite語句可以執行。
  redirect 如果replacement不是以http:// 或https://開始,返回302臨時重定向
  permant 返回301永久重定向
  最終完整的重定向URL包括請求scheme(http://,https://等),請求的server_name_in_redirect和 port_in_redirec三部分 ,說白了也就是http協議 域名 端口三部分組成。
  rewrite實例
  server {
  ...
  rewrite ^(/download/.*)/media/(.*)/..*$ $1/mp3/$2.mp3 last;
  rewrite ^(/download/.*)/audio/(.*)/..*$ $1/mp3/$2.ra last;
  return 403;
  ...
  }
  如果這些rewrite放到 “/download/” location如下所示, 那么應使用break而不是last , 使用last將循環10次匹配,然后返回 500錯誤:
  location /download/ {
  rewrite ^(/download/.*)/media/(.*)/..*$ $1/mp3/$2.mp3 break;
  rewrite ^(/download/.*)/audio/(.*)/..*$ $1/mp3/$2.ra break;
  return 403;
  }
  對于重寫后的URL(replacement)包含原請求的請求參數,原URL的?后的內容。如果不想帶原請求的參數 ,可以在replacement后加一個問號。如下,我們加了一個自定義的參數user=$1,然后在結尾處放了一個問號?,把原請的參數去掉。
  rewrite ^/users/(.*)$ /show?user=$1? last;
  如果正則表達regex式中包含 “}” 或 “;”, 那么整個表達式需要用雙引號或單引號包圍.
  rewrite_log指令
  語法:rewrite_log on|off;
  默認值:rewrite_log off;
  作用域:http,server,location,if
  開啟或關閉以notice級別打印rewrite處理日志到error log文件。
  nginx打開rewrite log例子
  rewrite_log on;
  error_log logs/xxx.error.log notice;
  1、打開rewrite on
  2、把error log的級別調整到 notice
  set指令
  語法:set variable value;
  默認值:none
  作用域:server,location,if
  定義一個變量并賦值,值可以是文本,變量或者文本變量混合體。
  uninitialized_variable_warn指令
  語法:uninitialized_variable_warn on | off;
  默認值:uninitialized_variable_warn on
  作用域:http,server,location,if
  控制是否輸出為初始化的變量到日志
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 竹溪县| 莫力| 房产| 房产| 浏阳市| 柳河县| 永春县| 晋州市| 措勤县| 友谊县| 饶平县| 崇左市| 宜川县| 高碑店市| 二手房| 肃宁县| 丽水市| 邵武市| 太仆寺旗| 周口市| 奉化市| 康保县| 民勤县| 柞水县| 潮安县| 治多县| 上饶市| 织金县| 福安市| 肇庆市| 安塞县| 鹿泉市| 聂荣县| 陇南市| 绩溪县| 察雅县| 策勒县| 长海县| 柳州市| 五家渠市| 云安县|