• xsz.tw 不带广告的小说站
  • down.tw 资源、下载站
  • dushu.tw 读书网、小说免费阅读网站

使用nginx反代cloudflare下的https站点

网站 举个栗子 4个月前 (02-13) 771次浏览 0个评论 扫描二维码

之前看到大家都在玩反代,我想了想现在的新博客挂着 cf 时不时真的很慢,虽然之前开启了cloudflare的 railgun
初次访问以然很慢,但是通过 railgun 之后后续的访问 fttb 时间大幅度缩短了,但是有时候还是很慢
而且之前把 railgun 部署到了一个比较大流量的站之后发现官网所说的大幅度减少带宽传递,这里其实有坑的
我实际部署了两天之后就把那个大流量站的 railgun 卸了,高峰期没有 railgun 上传 10M/s,加上 railgun 25-35M/s
这个原因我后面再说

使用 nginx 反代 cloudflare 下的 https 站点 学习反代很快,反代源站 http,反代源站 https 都没有问题了
反代在cloudflare下的 https 折腾了我好几个小时,期间论坛反代的帖子基本都翻完了,差点以为不行
使用 nginx 反代 cloudflare 下的 https 站点
论坛关于反代 cf 的帖子基本都是询问报错 403 502 的

接下来,分享经验

反代 Cloudflare 的好处在哪里
可以解决国内用户访问慢的问题(反代机器的线路质量决定)
可以解决源站和反代机器之间延迟过高,延迟不稳定的问题,毕竟 Cloudflare 在大多数地点都有本地节点,例如在香港和新加坡,都有本地节点,在香港或者新加坡的机器反代cloudflare本地节点的话,延迟只有 1ms 上下
使用 cloudflare partner 接入方式,可以在反代鸡鸡被攻击,切换到备用反代机器或者直接切回 cloudflarecdn(需要 dns 解析服务支持)
使用 nginx 反代 cloudflare 下的 https 站点 比如我目前就是海外解析都给你 cloudflare,国内都走反代,美滋滋

首先肯定是要 cfp 接入的~
cfp 任意解析大佬们都会了,我就不说这里了,直接开始

如果只是简单的反代 http 页面,在反代服务器简单的配置以下即可,例如使用宝塔面板的,默认设置即可成功实现反代 cloudflare http 站点
(反代服务器如果跟 cloudflare 给予的 Anycast 节点 IP 延迟过高,或者因为反代服务器 IP 是广播问题而造成的 cloudflare 分配到错误的节点问题,可以通过修改反代服务器的 hosts 文件进行修改)
例如在我的阿里云香港机器上面,ping 默认的 anycast 节点延迟为 40ms,抓包后发现 anycast 给我传递到了新加坡的 cloudflare 节点上去

使用 nginx 反代 cloudflare 下的 https 站点
所以我们要指定修改到香港的 cloudflare 节点上去(修改/etc/hosts 文件)
例如以下这个 cloudflare 的香港节点段,基本都是 1ms
使用 nginx 反代 cloudflare 下的 https 站点

设置好之后,我们去本机进行测试(记得调试的话修改本地 host 文件进行指定解析)
使用 nginx 反代 cloudflare 下的 https 站点
可以看到经过反代节点打开,浏览器的回应头 Server 已经从 cloudflare 变成了我们的 nginx!大功告成
(如果这时访问反代提示 cloudflare 的 Error 1001 等错误,请确认上面的步骤无误)
(如果提示 Error 1006,请检查反代服务器是否可以访问到经过 cloudflare 的源站)
(还有个错误我忘记了,想起来的时候再来修改吧)

咳咳,咱们继续,毕竟我们说的是要反代 https 呀,啥,你问我为啥要反代 https
还有就是一部分用户在用 cloudflare 的 Always Use HTTPS功能
继续继续,如果接下来只是单纯的修改宝塔设置,把反代的地址从 http 改为 https 的话,你会发现报错
(有些Nginx环境配置好后可以打开页面,但是动态链接无法使用,例如无法评论,无法注册登录,也是相同报错)
这个 502 报错就是好几个大佬询问的反代 cf https 的问题
使用 nginx 反代 cloudflare 下的 https 站点

(折腾了半天,同样的设置文件,反代我自己的 https 源站是可以反代成功的)
刚开始百度了好多页面,尝试着修改协议 proxy_ssl_protocols 关闭 ssl 设置
proxy_ssl_session_reuse off; 等等等等,都尝试过了,依然无法完美解决,最好的一次是可以反代成功 https 页面,但是所有动态操作无效
终于在 google 搜索找到了解决方案
如果是跟我一样,是自己的域名反代自己的话,只要在反代设置规则里面加入
proxy_ssl_name $host;
proxy_ssl_server_name on;

即可成功反代 Cloudflare 的 https 站点使用 nginx 反代 cloudflare 下的 https 站点

使用 nginx 反代 cloudflare 下的 https 站点 效果可以看我签名主站哈,10 点才改的 ns,估计还有一些地方没生效,不过全国应该差不多了吧
遇到问题反馈我使用 nginx 反代 cloudflare 下的 https 站点

现在反代我的 cf wordpress 已经没问题了,评论 注册登录(但我关了哈哈哈)后台都莫得问题

2020/02/19 更新
这几天仔细研究了一下 nginx 的缓存和反代的缓存设置
把一些心得也贴上吧,其实如果是反代 cloudflare 的站点的话,不开缓存其实也差不多,稍微慢一点点

如果要使用缓存的话,这几天做了很多很多次测试,结论在下面
1.如果源站设置 expires、源站端 max-age 和反代 nginx cahe 端的 proxy_cache_valid 的情况下,最终是以源站设置的 expires 的值进行缓存过期处理
2.假如在反代 nginx 中设置了相关配置,取消源站 expires 对缓存的影响(proxy_ignore_headers),在同时设置了源站 expires、源站端 max-age 和反代 nginx cache 端的 proxy_cache_valid 的情况下,最终以源站端 max-age 的值进行缓存过期处理
3.假如取消源站 expires 和源站端 max-age 对缓存的影响,则以反代 nginx 端 proxy_cache_valid 设置的值为标准进行缓存的过期处理
4.反代 nginx 端 inactive 的值不受上面所影响,就是请求页面后,根据 inactvie 设置的时间,都会强制进行缓存清理
5.所以对缓存过期的优先级进行排序为:inactvie、源站 expires、源站端 max-age、反代 nginx 的 proxy_cache_valid

#以下配置放在 http 区,不要在 server 区使用
proxy_temp_path /www/server/nginx/proxy_temp_dir;
proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
#这一段就是反代的缓存基本设置
#proxy_cache_path:缓存数据目录
#levels:按照几层目录分级
#keys_zone:key 空间名,后面的大小为 key 空间大小,1m 可以存放 8000 左右 key,所以不用设得过大
#inactive:强制更新时间,在指定时间内没人访问,就删除缓存(这个很重要,见上面说明,如果不会手动设置 proxy_cache_valid,或者懒得设置的话,把这个值设置为 1m,就会达到缓存内容 1 分钟没人访问自动清理)
#max_size:这个才是缓存数据的大小限制
client_body_buffer_size 512k;
#缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 60;
#nginx 跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 60;
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 60;
#请求的超时时间
proxy_buffer_size 32k;
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 64k;
#proxy_buffers 缓冲区,网页平均在 64k 以下
proxy_busy_buffers_size 128k;
#高负荷下缓冲大小(建议值为 proxy_buffers*2)
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;
#为缓存区名字

#以下缓存配置在反代规则里需要缓存的路径(不需要缓存的路径或者规则不要添加下面的)


add_header X-Cache $upstream_cache_status;


#增加头信息,可以在浏览器 F12 里观察

proxy_ignore_headers Set-Cookie Cache-Control expires;
#重要,强制缓存,不然有些页面不缓存
proxy_cache cache_one;
#开启缓存 缓存区名称
proxy_cache_key $host$uri$is_args$args;
#缓存 key
proxy_cache_valid 200 304 2h;
proxy_cache_valid 301 302 3d;
proxy_cache_valid any 10m;
#状态码 200,304 状态缓存 2 小时-301,302 的过期为 3 天,其余状态码 10 分钟过期

这样配合上面的话就是,常用的缓存文件,比如 200 304 状态的缓存为 2 小时,301 302 状态的缓存为三天,其余状态 10 分钟
这样不用手动去清理缓存文件,自动的清理了,各位试试吧

原文地址:https://www.hostloc.com/thread-643951-1-1.html


举个栗子 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 nginx 反代 cloudflare 下的 https 站点
喜欢 (1)
举个栗子
关于作者:
建筑工地上施工员,闲暇时弄个博客打发时间,
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址