找回密码
 立即注册
CeraNetworksBGVM服务器主机交流IP归属甄别会员请立即修改密码
查看: 16|回复: 1

【教程】Nginx 反代HTTPS 遇到403的问题,以反代cloudflare为例

[复制链接]

26

主题

482

回帖

2102

积分

金牌会员

积分
2102
发表于 2022-5-3 19:44:23 | 显示全部楼层 |阅读模式
好久没写文章了,来水一篇,顺便做下备忘
内容很水,至少简单的记录下,已经了解的大佬飘过哈
原文地址:https://blog.1234234.xyz/archives/34/

如下直接通过宝塔进行反代产生的配置文件:

[ol]
  • location /
  • {
  •     proxy_pass https://www.example.com;
  •     proxy_set_header Host $host;
  •     proxy_set_header X-Real-IP $remote_addr;
  •     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  •     proxy_set_header REMOTE-HOST $remote_addr;
  •     proxy_redirect off;
  •     add_header X-Cache $upstream_cache_status;
  •     #Set Nginx Cache
  •         add_header Cache-Control no-cache;
  •     expires 12h;
  • }[/ol]复制代码

    访问后基本上就是502、403的状态码
    但把上述的

    [ol]
  • proxy_pass https://www.example.com;[/ol]复制代码

    改为http://即可,原因自然是走了http的80端口,不是https的443端口
    但如果开启了强制https跳转,此方法就没有效果了

    如Cloudflare中,强制HTTPS选择仅支持单独为一个站点设置、或为账号下的全部站点设置,而页面规则免费账号也仅有3条,就算足够还得一条一个站点,着实麻烦。同时此方法也需要将SSL设置为关闭或灵活,若使用严格则也无效果。

    通过一番搜索找到如下方法:
    添加配置:

    [ol]
  •     proxy_ssl_name www.example.com;
  •     proxy_ssl_server_name on;
  •     proxy_redirect off;[/ol]复制代码

    即可,www.example.com为目标站点,其实就是加了一层SNI头。

    简单理解(可能有偏差):HTTP服务器要判断请求对应的网站是根据HOST头判断的,而HTTPS需要与通信双方校验SSL证书的可信度,服务端需要先返回对应的SSL证书,而服务端判断到底返回哪个网站的证书便是需要SNI头,之前我们没有设置相关的SNI信息,当然不会代理成功。

  • 回复

    使用道具 举报

    21

    主题

    455

    回帖

    1665

    积分

    金牌会员

    积分
    1665
    发表于 2022-5-3 19:50:55 | 显示全部楼层
    前排支持大佬一波,另外问一下论坛快照能不能加一个截取翻页的功能,快照只能看到第一页,后面的看不到。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-5-23 21:12 , Processed in 0.045753 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表