但是透過 CDN 連線後、就無法直接使用 iptables 或是 nginx 的 deny 功能阻止連線。
這時候就需要通過 $http_x_forwarded_for 這個參數來取得真正的IP
1.少量 ip 的話、直接寫在 server{} 裡面
server{
...............
...............
if ($http_x_forwarded_for ~* "8.8.8.8|8.8.4.4") {
return 403;
break;
}
}
2.ip 數量可能不少的狀況下、就要透過 map 功能了
另外編輯一個 deny_ip.conf 檔
map $http_x_forwarded_for $allowed {
default allow;
~\s*192.168.1.*$ deny;
~\s*192.168.168.11$ deny;
}
然後 nginx.conf 的 http{} 內加一行
http{
...............
...............
include deny_ip.conf;
}
server{} 裡面加上
server{
...............
...............
if ( $allowed = "deny" ) {
return 403;
}
}
這樣之後單獨編輯 deny_ip.conf 檔就好了
編輯後 nginx 要 reload 才會生效
0 意見:
張貼留言