# [乌萨奇整活]Nginx反代Cloudflare的网站
## 大家好,我是乌萨奇
本文源URL https://blog.537233.xyz/index.php/archives/7/
众所周知Cloudflare现在禁止了优选IP,那么自己拿个小鸡反代Cloudflare倒还是在合法线上的。
假设我们有一个backend.537233.xyz是开了 Cloudflare的CDN,那我们用fast.537233.xyz来进行加速(也就是你的小鸡反代Cloudflare),但如果直接通过Nginx来进行一个反向代理Cloudflare的Https的话通常会出现dns points to prohibited ip的这个问题,归根结底是因为Cloudflare现在已经开启了sni的识别回源。所以我们的解决思路是通过Nginx的SNI覆写和Host覆写来让小鸡改掉这两个CloudflareCDN回源的参数,从而可以达到CloudflareCDN的效果。
那么开始吧。
~~~
apt install nginx -y
~~~
然后改你的nginx.conf里关于server模块
~~~
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; # 监听所有域名
# 重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl; # 使用 SSL 监听
listen [::]:443 ssl;# 使用 SSL 监听
server_name fast.537233.xyz; # 替换为你的域名
# SSL 配置(根据需要替换为你的证书和密钥路径)
ssl_certificate 你的证书公钥路径;
ssl_certificate_key 你的证书私钥路径;
# 配置反向代理规则
location ^~ / {
proxy_pass https://backend.537233.xyz; # 替换为你的CDN后端域名
# 设置回源主机名
proxy_set_header Host backend.537233.xyz; # 替换为你的CDN后端域名
# 设置头部传递真实 IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 添加自定义响应头
add_header MyCacheStatus $upstream_cache_status;
add_header MyServerNode Node-01;
# 禁用缓存相关头部
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
add_header Pragma "no-cache";
add_header Expires "0";
# 禁用 Nginx 的缓存功能
proxy_buffering off;
proxy_cache off;
# 启用 SNI 支持
proxy_ssl_server_name on;
proxy_ssl_name backend.537233.xyz; # 替换为你的CDN后端域名
# 禁用 Gzip 压缩以确保数据一致性
gzip off;
proxy_set_header Accept-Encoding '*';
# 文本替换配置
sub_filter_once off;
sub_filter 'backend.537233.xyz' 'fast.537233.xyz'; # 前面的替换为你的CDN后端域名,后面的是你这个加速的域名
# WebSocket 配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
~~~
接着重载nginx的conf配置文件
~~~
nginx -s reload
~~~
没报错就应该没问题了,然后你自己打开一下看看有没有什么奇奇怪怪的问题。
至于如果是强绑定host的站点,例如alist这种,可以添加多一个Header,然后在后端nginx上进行一个 Host覆写就可以了。
大家要是需要这个整活的话,我可以再~~水多一贴的~~写一篇整活。
发表回复