成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Nginx -- 根據(jù) IP 匹配指定 URL

Pocher / 2707人閱讀

摘要:業(yè)務(wù)需求業(yè)務(wù)和開(kāi)發(fā)同事需要我這邊做一條規(guī)則,所有訪(fǎng)問(wèn)為非上海廣州外網(wǎng),為的請(qǐng)求都跳轉(zhuǎn)到。這樣就可以在生產(chǎn)上做隔離,不影響其他用戶(hù)的服務(wù)。

業(yè)務(wù)需求

業(yè)務(wù)和開(kāi)發(fā)同事需要我這邊做一條規(guī)則,所有訪(fǎng)問(wèn) ip 為非上海、廣州 office 外網(wǎng) ip,url 為http://test.com/fuck/index.html 的請(qǐng)求都跳轉(zhuǎn)到 http://test.com/index.html 。然后所有在上海和廣州 office 的外網(wǎng) IP 訪(fǎng)問(wèn) http://test.com/fuck/index.html 依然還是 http://test.com/fuck/index.html。這樣就可以在生產(chǎn)上做隔離,不影響其他用戶(hù)的服務(wù)。

  

注:因?yàn)槟壳吧a(chǎn)上的 Nginx 沒(méi)有做 lua 支持,所以就無(wú)法通過(guò)使用 lua 來(lái)實(shí)現(xiàn)該需求,也沒(méi)有安裝 geoip ,所以也無(wú)法用模塊來(lái)支持,只能原生的。

原始的 nginx 配置

upstream service_test {
         server 127.0.0.1:8080;
}


server
  {
    listen       80;
    server_name  test.com;

    index index.html index.php;
    root  /tmp/test.com;

    error_page 404  http://test.com/404.html;
    error_page 502  http://test.com/502.html;
    error_page 500  http://test.com/500.html;

    location ~* .(gif|jpg|jpeg|png|css|js|ico|txt|svg|woff|ttf|eot)$
    {
        rewrite ^(.*)$ /static$1 break;
        root /tmp/test.com; # 
        expires 1d;
    }

    location ~* .(html|htm)$
    {
        rewrite ^(.*)$ /static$1 break;
        roo  /tmp/test.com; #  
        expires 900s;
    }

    location / {

         proxy_pass http://service_test;

         include /opt/conf/nginx/proxy.conf;
    }

修改后的 Nginx 配置

upstream service_test {
         server 127.0.0.1:8080;
}


server
  {
    listen       80;
    server_name  test.com;

    index index.html index.php;
    root  /tmp/test.com;

    error_page 404  http://test.com/404.html;
    error_page 502  http://test.com/502.html;
    error_page 500  http://test.com/500.html;

    location ~* .(gif|jpg|jpeg|png|css|js|ico|txt|svg|woff|ttf|eot)$
    {
        rewrite ^(.*)$ /static$1 break;
        root /tmp/test.com; # 
        expires 1d;
    }

    location ~* .(html|htm)$
    {
        rewrite ^(.*)$ /static$1 break;
        roo  /tmp/test.com; #  
        expires 900s;
    }

   set $flag 0;
   if ($request_uri ~* "^/fuck/w+.html$") {
            set $flag "${flag}1";
    }
    if ($remote_addr !~* "192.168.0.50|192.168.0.51|192.168.0.56") {
       set $flag "${flag}2";
    }

    if ($flag = "012") {
        rewrite ^ /index.html permanent;
    }

    location / {

         proxy_pass http://service_test;

         include /opt/conf/nginx/proxy.conf;
    }
在實(shí)現(xiàn)需求的過(guò)程中出現(xiàn)的問(wèn)題

把 if 指令 和 proxy_pass 都放在 location 下面的話(huà),if 指令里面的內(nèi)容不會(huì)執(zhí)行,只會(huì)執(zhí)行 proxy_pass。

location / {
     if ($remote_addr !~* "192.168.0.50|192.168.0.51|192.168.0.56") {
           rewrite ^ /index.html permanent;
     }
     proxy_pass http://service_test;

     include /opt/conf/nginx/proxy.conf;
}

if 指令下面使用 proxy_pass 指令問(wèn)題

像下面這樣使用會(huì)報(bào)錯(cuò),錯(cuò)誤的方式:

        if ($remote_addr ~* "192.168.0.50|192.168.0.51|192.168.0.56") {
            proxy_pass http://test.com/fuck;
        }

正確的方式:

        if ($remote_addr ~* "192.168.0.50|192.168.0.51|192.168.0.56") {
            proxy_pass http://test.com$request_uri;
        }

或是

       if ($remote_addr ~* "192.168.0.50|192.168.0.51|192.168.0.56") {
            proxy_pass http://test.com;
        }

如果你是直接另外啟動(dòng)一個(gè) location 的話(huà),比如啟動(dòng)如下 location :

    location /fund {
         if ($remote_addr !~* "192.168.0.50|192.168.0.51|192.168.0.56") {
               rewrite ^ /index.html permanent;
         }
    }

這樣的方式也是不支持的,當(dāng)用 IP 192.168.0.50 訪(fǎng)問(wèn)的時(shí)候,沒(méi)有達(dá)到我們的業(yè)務(wù)需求,會(huì)報(bào)錯(cuò) 400

  

注:各位有其他好的建議,歡迎探討。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39095.html

相關(guān)文章

  • 前端nginx使用札記

    摘要:它是一個(gè)高性能的和反向代理服務(wù)器,同時(shí)也可以作為的代理服務(wù)器。如果相對(duì)域名或參數(shù)字符串起作用,可以使用全局變量匹配,也可以使用反向代理。 nginx是什么? nginx是俄羅斯人 Igor Sysoev為俄羅斯訪(fǎng)問(wèn)量第二的Rambler.ru站點(diǎn)開(kāi)發(fā)的一個(gè)十分輕量級(jí)的HTTP服務(wù)器。它是一個(gè)高性能的HTTP和反向代理服務(wù)器,同時(shí)也可以作為IMAP/POP3/SMTP的代理服務(wù)器。ngi...

    tianren124 評(píng)論0 收藏0
  • Nginx 配置根據(jù)請(qǐng)求IP末段進(jìn)行分流

    摘要:原文鏈接何曉東博客主要是參數(shù)中的判斷的配置跳轉(zhuǎn),分流能減輕服務(wù)器的負(fù)載和壓力,這種是一種非常常見(jiàn)的服務(wù)器部署架構(gòu)。本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則。返回永久重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的地址。 原文鏈接: 何曉東 博客 主要是 location 參數(shù)中的 if 判斷的配置跳轉(zhuǎn),分流能減輕服務(wù)器的負(fù)載和壓力,這種是一種非常常見(jiàn)的服務(wù)器部署架構(gòu)。 根據(jù) IP 最后一段的范...

    qingshanli1988 評(píng)論0 收藏0
  • Web前端必備-Nginx知識(shí)匯總

    摘要:安裝簡(jiǎn)單配置簡(jiǎn)潔啟動(dòng)快速便捷支持熱部署支持擁有高度模塊化的設(shè)計(jì)。備注在版本之前,不能在中使用權(quán)重。不能與同時(shí)使用。當(dāng)有服務(wù)器需要剔除,必須手動(dòng)掉。表示把請(qǐng)求轉(zhuǎn)發(fā)給連接數(shù)較少的后端服務(wù)器。表示當(dāng)前的暫時(shí)不參與負(fù)載均衡。表示預(yù)留的備份機(jī)器。 本文已同步到專(zhuān)業(yè)技術(shù)網(wǎng)站 www.sufaith.com, 該網(wǎng)站專(zhuān)注于前后端開(kāi)發(fā)技術(shù)與經(jīng)驗(yàn)分享, 包含Web開(kāi)發(fā)、Nodejs、Python、Lin...

    whatsns 評(píng)論0 收藏0
  • 前端培訓(xùn)-初級(jí)階段-場(chǎng)景實(shí)戰(zhàn)(2019-06-13)-Nginx代理正確食用方式

    摘要:前端最基礎(chǔ)的就是。我這邊預(yù)期準(zhǔn)備進(jìn)入中級(jí)階段,中間還是會(huì)穿插一些實(shí)戰(zhàn)。語(yǔ)法精確匹配,匹配成功,則停止搜索正則不能有嵌套的。指令會(huì)根據(jù)在配置文件中出現(xiàn)的順序依次執(zhí)行,可以使用來(lái)終止接下來(lái)的處理。如果以或者或者,則停止處理,立刻重定向。 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門(mén)技術(shù)就算入門(mén),但也僅僅是入門(mén),現(xiàn)在前端開(kāi)發(fā)的定義已經(jīng)遠(yuǎn)遠(yuǎn)不止這些。前端小課堂(HTM...

    Harpsichord1207 評(píng)論0 收藏0
  • 前端培訓(xùn)-初級(jí)階段-場(chǎng)景實(shí)戰(zhàn)(2019-06-13)-Nginx代理正確食用方式

    摘要:前端最基礎(chǔ)的就是。我這邊預(yù)期準(zhǔn)備進(jìn)入中級(jí)階段,中間還是會(huì)穿插一些實(shí)戰(zhàn)。語(yǔ)法精確匹配,匹配成功,則停止搜索正則不能有嵌套的。指令會(huì)根據(jù)在配置文件中出現(xiàn)的順序依次執(zhí)行,可以使用來(lái)終止接下來(lái)的處理。如果以或者或者,則停止處理,立刻重定向。 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門(mén)技術(shù)就算入門(mén),但也僅僅是入門(mén),現(xiàn)在前端開(kāi)發(fā)的定義已經(jīng)遠(yuǎn)遠(yuǎn)不止這些。前端小課堂(HTM...

    seanHai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<