我在 Cloudflare 设置了将来自 中国大陆 访问根路径 的请求全部跳转到 https://www.aki.pm/
虽然这样子对大陆访客来说会有点麻烦, 但至少能让整个根域名不被盯上, 保证图床服务等能正常使用.
得益于 https 技术, 现在 ISP (网络运营商) 没有办法看到用户的实际通信内容, 但访问了哪个域名还是可以知道的.
为了防一手 GFW 的主动探测, 既然他们只能扫描域名根目录的内容, 那么我让域名根目录不提供实际内容就行了. 不过这样做会影响海外请求, 所以该博客只对 CN 的请求做了过滤 (反正能看到这博客的一般也都有 VPN 代理).
类似的, 对于 https://akiusagi.cc/ 这个官网, 访问根目录会返回 302 重定向到日文版网页, which is NOT a SUPPORTED LANGUAGE for GFW. 所以只靠 GFW 的自动化脚本 和 敏感Keyword识别, 应该不太可能会对我的官网做什么.
之后还打算在我的本子里 放个方便购买附加内容的短链接. 但是本子没有办法复制文本, 所以买了个 aki.pm 的短域名, 方便手工输入给浏览器. 利用网站子目录扫描成本高的特性, 我将官网放到了 https://www.aki.pm/bieyongwx/zh/ 只需要在那个 伪装成免费动漫素材 的首页密码框 输入:
jcwdsk
就能进来了.
所跳转到的子路径, Nginx 识别匹配后, 会将你反向代理到我的作品集网站. 不过, 为了跟 Wordpress 的基本功能兼容, 这反代参数调了很久:
xxxxxxxxxx
set $is_quark "0";
# 如果 User-Agent 中包含 "Quark",则设置 $is_quark 为 1
if ($http_user_agent ~* "Quark") {
set $is_quark "1";
}
location / {
set $rootdir "/usr/share/nginx/html/";
if ($is_quark = "1") {
set $rootdir "/usr/share/nginx/html/quark/";
}
alias $rootdir;
index index.html index.php index.htm;
try_files $uri $uri/ =404;
}
location ~ ^/bieyongwx/(.*) {
proxy_set_header Host akiusagi.cc; #设置http请求头的host字段的值
proxy_set_header Accept-Encoding ""; #gzip网页压缩会导致nginx无法替换网页内容,故声明不支持任何压缩
proxy_ssl_server_name on; #打开对于tls请求的sni支持,让主站nginx能正常分流
#location里的正则表达式会占用$1变量,“(.*)”的内容会传给$1。后面还有正则表达式,所以先把现在的结果用变量存起来
set $fuck_url_path https://xxx.xxx.xxx.xxx/$1$is_args$args; #$is_args会判断是否加问号"?",$args是所有请求字符串的总和
proxy_pass $fuck_url_path; #反向代理的目的地
proxy_http_version 1.1; #设置高一点的http版本,加速,但nginx反代不支持http2
sub_filter_once off; #不止替换一次网页内关键词
sub_filter 'akiusagi.cc' 'www.aki.pm/bieyongwx'; #替换所有超链接
sub_filter_types *; #不限定所替换的html标签类型
#文章密码验证依赖于referer运行,不想改wordpress那边的代码,毕竟还要定期更新
set $new_referer https://akiusagi.cc;
#正则表达式删去当前referer的前28个字符,刚好到$uri的部分
if ($http_referer ~ "^.{28}(.*)") {
#字符串为什么用变量时要加花括号?
set $new_referer "${new_referer}$1";
}
proxy_set_header Referer $new_referer;
#处理所有301、302等重定向,替换成反向代理的线路
proxy_redirect https://akiusagi.cc/ https://www.aki.pm/bieyongwx/;
#error_log /var/log/nginx/proxy_error.log;
#access_log /var/log/nginx/proxy_access.log ty_proxy_log_format;
}
另外, 那个短域名网站使用了带有大陆精品网的机房, 而且是不跨网的 (电信 CN2 GIA, 联通 4837, 移动 CMIN2), 墙应该会比骨干网要矮一些.
目前还不知道 GFW 主动探测是否会动用三大运营商的境外节点, 比如香港和美西出口. 理论上根目录没敏感内容应该就行了, 毕竟我见过某高并发 QQ 机器人色图 API 还坚挺到现在的. 希望实验成功.