rewrite_log on ;#每次rewrite都會記錄一條記錄在errorlog裏
error_log logs/xxx.log notice;
location /first { rewrite /first(.*) /second$1 last; #表示從新開始匹配location rewrite 第一個參數 /first(.*)表示被替換的值 /second$1 表示要替換成的值 last(flag前面有解釋) return 200 'first!\n'; } location /second { rewrite /second(.*) /third$1 break; #直接中止 #rewrite /second(.*) /third$1; return 200 'second!\n'; } location /third { return 200 'third!\n'; }
location /redirect1 {
rewrite /redirect1(.*) $1 permanent; #permanent表示直接返回301重定向
}html
location /redirect2 {
rewrite /redirect2(.*) $1 redirect; #redirect表示302重定向
}nginx
location /redirect3 {
rewrite /redirect3 http://www.baidu.com; #如太重定向裏帶有http或https則默認302重定向
}curl
location /redirect4 {
rewrite /redirect4(.*) http://rewrite.taohui.tech$1 permanent; #雖然有http或https則應爲flag是permanent 因此重定向是301
}ui
[root@3 conf]# curl http://shop**.com.cn:8080/redirect3 -I #經過代碼能夠看到如下頭部結果 HTTP/1.1 302 Moved Temporarily Server: openresty/1.13.6.2 Date: Sun, 14 Apr 2019 08:44:19 GMT Content-Type: text/html Content-Length: 167 Connection: keep-alive Location: http://www.baidu.com
這裏要注意 假設設置了return 指令 又同時設置累error_page 指令 那麼 return 將優先被執行 由於 處於SERVER_REWRITE階段 執行在POSTREAD階段後 因此先執行 error_page將不起做用url
error_page 指令spa
error_page 404 /404.html error_page 404 500 502 /500.html; error_page 404=200 /xxx.png (當發生404時候 返回一張圖片 返回碼是200) location / { error_page 404 =@fallback; } location @fallback{ proxy_pass http://backend; }
if 指令rest
syntax: if(condition){....}code
default: --server
context:server、locationhtm
nginx.conf 演示
isten 8090;#監聽端口 root html/; location /first { rewrite /first(.*) /second$1 last;#用replacement進行新的url地址匹配 return 200 'first!\n'; } location /second { rewrite /second(.*) /third$1 break; return 200 'second!\n'; } location /third { return 200 'third!\n'; }
L 51-53