最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx中rewrite和if的使用及配置方式

 更新時(shí)間:2026年05月04日 11:13:01   作者:咖啡調(diào)調(diào)。  
文章主要解釋了Nginx中rewrite和ifginx跳轉(zhuǎn)需求的實(shí)現(xiàn)方式、rewrite和ifginx正則表達(dá)式、常用的Nginx正則表達(dá)式、案例配置等內(nèi)容,并涉及到了rewrite和if的應(yīng)用場景和用法,以及flag對Nginx中g(shù)inx防盜鏈案例等ginx的ginx基于瀏覽器實(shí)現(xiàn)ginx實(shí)現(xiàn)分離案例等

一、rewrite應(yīng)用

rewrite語法

rewrite  <正則表達(dá)式>  <跳轉(zhuǎn)后的內(nèi)容>  [rewrite支持的flag標(biāo)記]

1、rewrite跳轉(zhuǎn)場景

  • URL看起來更規(guī)范、合理
  • 企業(yè)會(huì)將動(dòng)態(tài)URL地址偽裝成靜態(tài)地址提供服務(wù)
  • 網(wǎng)址換新域名后,讓舊的訪問跳轉(zhuǎn)到新的域名上
  • 服務(wù)端某些業(yè)務(wù)調(diào)整

2、rewrite實(shí)際場景

1.3.1 Nginx跳轉(zhuǎn)需求的實(shí)現(xiàn)方式

  • 使用rewrite進(jìn)行匹配跳轉(zhuǎn)
  • 使用if匹配全局變量后跳轉(zhuǎn)
  • 使用location匹配再跳轉(zhuǎn)

1.3.2 rewrite放在server{},if{},location{}段中

  • location只對域名后邊的除去傳遞參數(shù)外的字符串起作用

1.3.3 對域名或參數(shù)字符串

  • 使用if全局變量匹配
  • 使用proxy_pass反向代理

3、常用的nginx正則表達(dá)式

^:匹配輸入字符串的起始位置
$:匹配輸入字符串的結(jié)束位置
*****:匹配前面的字符零次或多次
+:匹配前面的字符一次或多次
?:匹配前面的字符零次或一次
.:匹配除\n之外的任何單個(gè)字符 使用[.\n]可以匹配包括\n在內(nèi)的任意字符
****:轉(zhuǎn)義符
\d:匹配純數(shù)字
{n}:重復(fù)n次
{n,}:重復(fù)n次或更多次
[c]:匹配單個(gè)字符c
[a-z]:匹配a-z小寫字母的任意一個(gè)
[a-zA-Z]:匹配a-z小寫字母或A-Z大寫字母的任意一個(gè)

4、常見的flag

flag作用
last基本上都用這個(gè)flag,表示當(dāng)前的匹配結(jié)束,繼續(xù)下一個(gè)匹配,最多匹配10個(gè)到20個(gè) 一旦此rewrite規(guī)則重寫完成后,就不再被后面其它的rewrite規(guī)則進(jìn)行處理 而是由UserAgent重新對重寫后的URL再一次發(fā)起請求,并從頭開始執(zhí)行類似的過程
break中止Rewrite,不再繼續(xù)匹配 一旦此rewrite規(guī)則重寫完成后,由UserAgent對新的URL重新發(fā)起請求, 且不再會(huì)被當(dāng)前l(fā)ocation內(nèi)的任何rewrite規(guī)則所檢查
redirect以臨時(shí)重定向的HTTP狀態(tài)302返回新的URL
permanent以永久重定向的HTTP狀態(tài)301返回新的URL

last和break在重定向后,地址欄都不會(huì)發(fā)生變化,這是它們的相同點(diǎn),不同點(diǎn)在于last會(huì)寫在server和if中,break是寫在location中,last不會(huì)終止重寫后的url匹配,break會(huì)終止重寫后的url匹配。

5、案例配置

rewrite重寫flag

rewrite主要是用來重寫URL或者跳轉(zhuǎn)URL的指令

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf		
		root /hhh/xxx;
    	location / {
                rewrite /1.html /2.html;
                rewrite /2.html /3.html;
        }

        location /2.html {
                rewrite /2.html /a.html;
        }

        location /3.html {
                rewrite /3.html /b.html;
        }
        
[root@nginx ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@nginx ~]# systemctl restart nginx

[root@nginx ~]# mkdir -p /hhh/xxx
[root@nginx ~]# echo "web1" > /hhh/xxx/1.html
[root@nginx ~]# echo "web2" > /hhh/xxx/2.html 
[root@nginx ~]# echo "web3" > /hhh/xxx/3.html
[root@nginx ~]# echo "web a" > /hhh/xxx/a.html
[root@nginx ~]# echo "web b" > /hhh/xxx/b.html
[root@nginx ~]# curl 192.168.183.138/1.html
web b

當(dāng)請求1.html時(shí),最終會(huì)訪問到web b

location{}內(nèi)部,遇到break,本location{}內(nèi)以及后面的所有location{}內(nèi)的所有指令都不再執(zhí)行,所以至跳轉(zhuǎn)到2.html訪問到web2

		location / {                                
                rewrite /1.html /2.html break;
                rewrite /2.html /3.html;            
        }                                                                                     
        location /2.html {                          
                rewrite /2.html /a.html;            
        }                                      
                                                
        location /3.html {                          
                rewrite /3.html /b.html;            
        }   
        
[root@nginx ~]# curl 192.168.183.138/1.html
web2

在location{}內(nèi)部,遇到last,本location{}內(nèi)后續(xù)指令不再執(zhí)行,而重寫后的url會(huì)對所在的server{…}標(biāo)簽重新發(fā)起請求,從頭到尾匹配一遍規(guī)則,哪個(gè)匹配則執(zhí)行哪個(gè)。

		location / {
                rewrite /1.html /2.html last;
                rewrite /2.html /3.html;
        }

        location /2.html {
                rewrite /2.html /a.html;
        }

        location /3.html {
                rewrite /3.html /b.html;
        }
        
[root@nginx ~]# curl 192.168.183.138/1.html     web a

二、if應(yīng)用

1、if語句中的判斷條件

正則表達(dá)式匹配

  • ==:等值比較;
  • ~:與指定正則表達(dá)式模式匹配時(shí)返回“真”,判斷匹配與否時(shí)區(qū)分字符大小寫;
  • ~*:與指定正則表達(dá)式模式匹配時(shí)返回“真”,判斷匹配與否時(shí)不區(qū)分字符大小寫;
  • !~:與指定正則表達(dá)式模式不匹配時(shí)返回“真”,判斷匹配與否時(shí)區(qū)分字符大小寫;
  • !~*:與指定正則表達(dá)式模式不匹配時(shí)返回“真”,判斷匹配與否時(shí)不區(qū)分字符大小寫

2、文件及目錄匹配判斷

  • -f, !-f:判斷指定的路徑是否為存在且為文件;
  • -d, !-d:判斷指定的路徑是否為存在且為目錄;
  • -e, !-e:判斷指定的路徑是否存在,文件或目錄均可;
  • -x, !-x:判斷指定路徑的文件是否存在且可執(zhí)行;

3、基于瀏覽器實(shí)現(xiàn)分離案例

if ($http_user_agent ~ Firefox) {
  rewrite ^(.*)$ /firefox/$1 break;
}

if ($http_user_agent ~ MSIE) {
  rewrite ^(.*)$ /msie/$1 break;
}

if ($http_user_agent ~ Chrome) {
  rewrite ^(.*)$ /chrome/$1 break;
}

4、防盜鏈案例

location ~* \.(jpg|gif|jpeg|png)$ {
  valid_referers none blocked www.idfsoft.com;
  if ($invalid_referer) {
    rewrite ^/ http://www.idfsoft.com/403.html;
  }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用nginx+lua進(jìn)行token鑒權(quán)的方法

    使用nginx+lua進(jìn)行token鑒權(quán)的方法

    使用nginx和lua腳本實(shí)現(xiàn)對Minio服務(wù)器圖片鏈接的token鑒權(quán),通過反向代理隱藏真實(shí)IP,增強(qiáng)安全性,介紹了整個(gè)鑒權(quán)流程,包括nginx配置和lua腳本的具體實(shí)現(xiàn),適用于需要保護(hù)圖片不被未授權(quán)訪問的場景
    2022-05-05
  • Nginx的try_files指令使用實(shí)例

    Nginx的try_files指令使用實(shí)例

    這篇文章主要介紹了Nginx的try_files指令使用實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)完整步驟

    銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)完整步驟

    這篇文章主要介紹了銀河麒麟(Kylin)離線安裝Nginx并部署多服務(wù)的相關(guān)資料,包括依賴包下載、HTTPS配置、多端口站點(diǎn)部署等步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解

    nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解

    這篇文章主要介紹了nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • nginx 訪問限制與訪問控制的實(shí)現(xiàn)

    nginx 訪問限制與訪問控制的實(shí)現(xiàn)

    訪問控制要做的事情是控制客戶端的資源訪問權(quán)限,本文主要介紹了nginx 訪問限制與訪問控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Nginx如何自動(dòng)封禁可疑Ip

    Nginx如何自動(dòng)封禁可疑Ip

    這篇文章主要介紹了Nginx如何自動(dòng)封禁可疑Ip問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 詳解Prometheus 抓取 nginx 訪問日志的指標(biāo)

    詳解Prometheus 抓取 nginx 訪問日志的指標(biāo)

    通過結(jié)合NGINX Exporter, Fluentd, Prometheus和Grafana, 可有效監(jiān)控并可視化NGINX中的4xx和5xx狀態(tài)碼日志,首先使用Fluentd收集和解析NGINX日志,再通過Prometheus抓取Fluentd暴露的指標(biāo),本文介紹Prometheus抓取nginx訪問日志的指標(biāo),感興趣的朋友一起看看吧
    2024-10-10
  • Nginx實(shí)現(xiàn)自簽名SSL證書生成與配置實(shí)現(xiàn)

    Nginx實(shí)現(xiàn)自簽名SSL證書生成與配置實(shí)現(xiàn)

    本文主要介紹了Nginx實(shí)現(xiàn)自簽名SSL證書生成與配置實(shí)現(xiàn),文章將詳細(xì)介紹生成自簽名SSL證書的步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • nginx+uwsgi啟動(dòng)Django項(xiàng)目的詳細(xì)步驟

    nginx+uwsgi啟動(dòng)Django項(xiàng)目的詳細(xì)步驟

    nginx+uwsgi+django是我們常用的django部署方式。這篇文章主要介紹了nginx+uwsgi啟動(dòng)Django項(xiàng)目的詳細(xì)步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • nginx 常用指令 try_files allow root alias的使用

    nginx 常用指令 try_files allow root ali

    本文主要介紹了nginx 常用指令 try_files allow root alias的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評論

军事| 萨嘎县| 日照市| 邵阳县| 绿春县| 和静县| 万山特区| 克拉玛依市| 确山县| 白河县| 祥云县| 南宫市| 光山县| 巩留县| 土默特左旗| 庆城县| 凤阳县| 璧山县| 太仓市| 岑溪市| 江安县| 稻城县| 金阳县| 云南省| 特克斯县| 莒南县| 滕州市| 金塔县| 皋兰县| 富民县| 邵阳市| 连云港市| 灌南县| 平谷区| 拉萨市| 团风县| 贺州市| 连云港市| 绿春县| 太仆寺旗| 九龙坡区|