|
用户访问网站的流程:浏览器 -> Cloudflare CDN -> 服务器 Nginx -> 服务器 PHP
Cloudflare 免费版无法配置自定义拦截网页,所以在 Nginx 里自定义
1. 在 Nginx 的 server 节点末尾增加下代码:
- set $is_blocked 0; # 默认不阻止
- if ($http_cf_ipcountry = "CN") { # 阻止中国 IP,注意 = 两边都有空格
- set $is_blocked 1;
- }
- if ($http_cf_connecting_ip ~ "^a123:b456:c789") { # 放行 a123:b456:c789 开头的 IP
- set $is_blocked 0;
- }
- if ($http_cf_connecting_ip ~ "^192.168.") { # 放行 192.168. 开头的 IP
- set $is_blocked 0;
- }
- if ($is_blocked) {
- return 451; # 如果被阻就返回 451
- }
- error_page 451 = @custom_451; # 自定义 451 错误页面
- location @custom_451 { # 返回自定义 HTML 内容
- default_type text/html;
- return 200 "
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>451 Forbidden</title>
- </head>
- <body>
- <p>根据服务器所在国家的法规,无法为您所在的国家/地区显示网页内容</p>
- <p>您的 IP:${http_cf_connecting_ip}(中国大陆)</p>
- </body>
- </html>";
- }
复制代码 |
|