V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FaiChou
V2EX  ›  程序员

nginx 反代 cf workers 502 求助

  •  
  •   FaiChou ·
    FaiChou · 2023-03-14 16:46:30 +08:00 · 2762 次点击
    这是一个创建于 643 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 cf workers 写了一个服务, 但是域名(workers.dev)被墙, 想用一台没有被墙的服务器来将请求转发到 workers 上, 这样直接请求 ip 就可以了. 以下是我 nginx 的配置:

    server
        {
            listen 80;
            location / {
                proxy_pass https://xxxxx.xx.workers.dev/;
                proxy_set_header Host xxxxx.xx.workers.dev;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }
    

    重启 nginx 后, 请求 ip 返回 502.

    自己 0 运维经验, 搜了下大概是因为 https 的问题? 但尝试配置证书也都无效. 或者是因为 cf 5 秒盾的问题?

    所以 nginx 可以实现转发么? 或者有其他方案?

    第 1 条附言  ·  2023-03-14 19:47:28 +08:00
    把域名放到 cf 解析, 然后添加一个 subdomain 给 cf worker. 完美解决.
    谢谢 2L 的建议.
    19 条回复    2023-03-15 09:33:32 +08:00
    huyoa
        1
    huyoa  
       2023-03-14 16:57:55 +08:00
    dingyi9257
        2
    dingyi9257  
       2023-03-14 16:59:11 +08:00 via Android   ❤️ 1
    Custom Domains
    defunct9
        3
    defunct9  
       2023-03-14 17:00:11 +08:00
    开 ssh ,让我上去看看
    brader
        4
    brader  
       2023-03-14 17:04:06 +08:00
    1 楼说的也是不对的,其介绍的 https 情况,是针对 客户端->代理服务器的 https 配置,而你的应用中,没有一定要 https 来访问自己的代理端
    FaiChou
        5
    FaiChou  
    OP
       2023-03-14 17:10:20 +08:00
    @huyoa 我的配置也是 chatgpt 给我生成的 , 所以遇到 502 问题来这求教一下
    gam2046
        6
    gam2046  
       2023-03-14 17:15:29 +08:00
    #2 是正解,自定义域名可解,而且速度还不错的。
    brader
        7
    brader  
       2023-03-14 17:22:20 +08:00
    @gam2046 这个结论过于武断。chatgpt 的地址被墙了,我就亲身配置了:
    ```
    server {
    listen 88;

    location / {
    proxy_pass https://api.openai.com$request_uri;
    }
    }
    ```

    客户端使用的 ip+端口在调用,目前服务一直正常
    brader
        8
    brader  
       2023-03-14 17:25:16 +08:00
    楼主,我建议你换个端口尝试先,不要用 80 、443 ,因为 nginx 默认监听 80 端口(当然,我不确定你是否删除了默认配置),没有域名的区分,很可能给你解析到其他地方去了,所以换一个端口号来区分。
    当然,这只是一个尝试建议,没看到日志前,不确定是这个原因
    FaiChou
        9
    FaiChou  
    OP
       2023-03-14 17:27:51 +08:00
    @brader 所以我怀疑是不是 cf 5 秒盾的原因
    gam2046
        10
    gam2046  
       2023-03-14 17:29:58 +08:00
    @brader workers 往外访问墙什么。只是客户端到 workers 之间连接被阻断了,通过自定义域名绑定 workers 就可以解决了呀。sni 阻断,不是整个 cf ip 被阻断了。

    非要自己反代当然是可以的,只是没必要。dashboard 鼠标点两下的事情,全程不用三分钟。
    brader
        11
    brader  
       2023-03-14 17:30:20 +08:00
    @FaiChou 我并不知道你说的 cf 5 秒盾 是什么意思,你可以先尝试我上面说的换端口,如果还不行,建议打开 nginx 详细日志查看
    brader
        12
    brader  
       2023-03-14 17:32:53 +08:00
    @gam2046 抱歉,那是我误会你的意思了,我以为你说的是反向代理也要监听域名才行。我只懂技术方面的问题,cf workers 是什么我并不清楚,它如何工作我也不清楚
    yasi
        13
    yasi  
       2023-03-14 17:46:49 +08:00
    @brader 按照你给的配置,用 ip+port 访问提示是 502 Bad Gateway... 不知是啥问题
    f0rger
        14
    f0rger  
       2023-03-14 18:47:29 +08:00 via iPhone
    名字好熟悉,是不是 aptv 作者?建议在 cf 上买个便宜域名可以比较快解决,也可以正常访问。cf 可以开日志定位,请求的时候看一下日志
    XEdge
        15
    XEdge  
       2023-03-14 19:00:01 +08:00
    加上如下配置,$host 是被反向代理的域名

    proxy_ssl_name $host;
    proxy_ssl_server_name on;
    FaiChou
        16
    FaiChou  
    OP
       2023-03-14 19:48:52 +08:00
    @f0rger 哈哈 我是另一款 tvOS 应用的作者. 搞了个域名解析到 cf 已经可以了.
    scemsjyd
        17
    scemsjyd  
       2023-03-14 20:05:48 +08:00
    xxx.xxx.works.dev 的域名解析的问题,可以配置 nginx 的 resolver 指令指定 dns 解析试试。nginx 好像是不支持反代域名,必须要手动指定 dns 的解析。当然直接使用 cf 的 cdn 是最佳办法,没必要再走一层代理。
    ik
        18
    ik  
       2023-03-15 09:32:38 +08:00 via iPhone
    加 #15 的配置就行,应该要没有 5 秒盾的前提。
    ik
        19
    ik  
       2023-03-15 09:33:32 +08:00 via iPhone
    还有 nginx 要单独配 dns ,你的配置里面看起来也没有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:11 · PVG 08:11 · LAX 16:11 · JFK 19:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.