網站才用的是wordpress,以前被黑了,login.php被暴力破解,爲了增長安全性,如今經理讓我作一個訪問控制,只能有一個ip能訪問login.php。若是單純跑一個apache問題很容易解決加兩行rewrite就能搞定,如今的問題是服務器上跑了好幾個web,nginx作的分發;nginx rewrite多條件判斷找了半天也沒有找到,最後終於找到了,是利用set添加變量,再利用if語句。php
目的:只容許一個IP訪問/login.php或是/wp-admin;nginx
location / {web
set $my_ip '';apache
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";}ide
set $my_url2 '';wordpress
if ( $request_uri ~* ^(.*)/wp-admin$ ){set $my_url2 "${my_ip}c";}網站
if ( $my_url = pl ){url
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;
}
這樣就能達到目的,有沒有其餘方法我也在考慮中,這個方法有什麼問題也請你們不吝賜教。