1 背景
国内服务器需要备案才能开放用域名访问80 443端口, 而使用Cloudflare似乎默认依赖于这两个端口
(即使Cloudflare支持其它其它几个非标准的端口, 但受似乎不对国内流量生效)
2 方案
转入Cloudflare, 配置DNS记录, 点亮图标.
2.1 开启完全流量代理
2.2 安装cloudflare 证书
如你所见, 此证书仅适用于Cloudflare 与源服务器之间的加密
2.3 Nginx 安装
- 根据实际情况修改证书路径
- 端口随意
server{
listen 8666 ssl;
root /home/web/dist;
ssl_certificate /etc/nginx/cert/ssl.pem;
ssl_certificate_key /etc/nginx/cert/ssl.key;
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
location / {
index index.html index.htm;
}
location /api {
rewrite ^/api(.*)$ $1 break;
proxy_pass http://localhost:8888;
}
}
2.4 配置 Origin Rule
- 匹配所有请求
- 表达式匹配
此处可以使用SSL/HTTPS作为条件, 因为你与Cloudflare之间的通信刚好是使用HTTPS进行的. ( 2.1 已开启加密 )
此处的重写端口要与Nginx中的对应.
3 完成
现在, Cloudfalre已经接管了客户端与源服务器之间的流量. ( Cloudflare请求目标端口的资源返回给客户端)
4 参考
https://seviche.cc/2022-06-12-cloudflare/
https://segmentfault.com/a/1190000022673232
仅作记录, 欢迎指出错误