nginx訪問控制 if多條件判斷

網站才用的是wordpress,之前被黑了,login.php被暴力破解,爲了增加安全性,現在經理讓我做一個訪問控制,只能有一個ip能訪問login.php。如果單純跑一個apache問題很容易解決加兩行rewrite就能搞定,現在的問題是服務器上跑了好幾個web,nginx做的分發;nginx  rewrite多條件判斷找了半天也沒有找到,最後終於找到了,是利用set添加變量,再利用if語句。


目的:只允許一個IP訪問/login.php或是/wp-admin;

        location / {


        set $my_ip '';

        if ( $remote_addr !~* ^1.2.3.4$ ){set $my_ip p;}

        set $my_url '';

        if ( $request_uri ~* ^(.*)/wp-login\.php$ ){set $my_url "${my_ip}l";}

        set $my_url2 '';

        if ( $request_uri ~* ^(.*)/wp-admin$ ){set $my_url2 "${my_ip}c";}

        if ( $my_url = pl ){

                rewrite ^(.*)$ default;

        }

        if ( $my_url2 = pc ){

                rewrite ^(.*)$ default break;

        }


            proxy_redirect off;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://192.168.1.98:800;


        }

這樣就能達到目的,有沒有其他方法我也在考慮中,這個方法有什麼問題也請大家不吝賜教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章