簡體   English   中英

Nginx阻止/拒絕訪問多個位置正則表達式

[英]Nginx Block/Deny Access to multiple locations regex

我使用Nginx作為我的Apache灌注的反向代理,作為安全功能,它阻止除了localhost之外的所有人訪問phpmyadmin,webalizer等但是使用nginx它使Apache認為它是localhost所以它公開顯示給每個人。

<LocationMatch "^/(?i:(?:xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
    Allow from ::1 127.0.0.0/8 \
        fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
        fe80::/10 169.254.0.0/16

    ErrorDocument 403 /
</LocationMatch>

我需要將以上規則模式匹配正則表達式轉換為以下內容。

location /phpmyadmin {
        proxy_pass         htt://127.0.0.1:8080/phpmyadmin;
        allow 127.0.0.1;
        deny all;
    }

非常感謝任何熟悉Nginx正則表達式的人的幫助。

以下方法可以正常工作,但會破壞搜索引擎友好的普通網站網址,例如domain.com/forums/server-info

location ~ /(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
    deny  all;
}

由於apache正則表達式具有'^',我們可以將'^'強制匹配從路徑的開頭。

location ~ ^/(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
  proxy_pass         http://127.0.0.1:8080$request_uri;
  .... allow/deny directives come here
}

[編輯]括號內的匹配字符串存儲在$ 1中。 所以你可以試試

http://127.0.0.1:8080/$1

如果那是你想要的。 但是,我的理解是你想將整個uri路徑傳遞給apache服務器。 在這種情況下,使用nginx變量$ request_uri更簡單。

看起來你已經擁有它了。 為了安全起見,nginx將從上到下閱讀,所以最后留下deny all:

location /(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
  allow from ::1;
  allow from fc00::/7;
  allow from fe80::/10;
  allow 127.0.0.0/8;
  allow 10.0.0.0/8;
  allow 172.16.0.0/12;
  allow 192.168.0.0/16;
  allow 169.254.0.0/16;
  deny all;
}

請注意,這將適用於任何URL /phpmyadmin等。包括/someplaceelse/phpmyadmin 您可以僅為http://host/phpmyadmin匹配添加^到此匹配。 雖然從它的聲音,你可能不得不在這種情況下將其拆分為多個位置指令。

我不確定你的搜索引擎友好是什么意思。 如果您希望可以訪問server-info,只需將其從正則表達式中刪除即可 案例。

對於phpmyadmin代理:

location ^/phpmyadmin {
    proxy_pass    http://127.0.0.1:8080; 
}

nginx將獲取位置匹配中的所有內容並將其附加到http://127.0.0.1:8080

例如,您可以使用〜來修改此行為。 http://wiki.nginx.org/HttpCoreModule#location

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM