V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Chism
V2EX  ›  NGINX

Nginx 如何实现这样的通用反代?

  •  
  •   Chism · 2022-04-22 16:37:37 +08:00 · 2832 次点击
    这是一个创建于 938 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http(s)://myDomain/targetDomain/params
    反代
    http(s)://targetDomain/params
    其中第二个 targetDomain 会跟着第一个 targetDomain 而改变,http/https 协议也跟随前者而改变
    或者是否已经有现成的网址?
    8 条回复    2022-04-24 12:50:58 +08:00
    keepeye
        1
    keepeye  
       2022-04-22 16:46:49 +08:00
    首先协议没有变化之说,http 和 https 是两个 server 块,你要分别在里面写规则

    规则试试看下面这种,我也不知道行不行

    location ~ /(.*)/(.*) {
    resolver 8.8.8.8;
    set $myhost $1;
    proxy_pass http://$myhost/$2;
    }
    codefever
        2
    codefever  
       2022-04-22 16:53:46 +08:00
    @keepeye 我看了一下,应该没问题
    iqoo
        4
    iqoo  
       2022-04-22 17:38:15 +08:00
    建议加上 upstream 配置 keepalive ,不然每次访问都要建立连接,性能开销超大。
    FanError
        5
    FanError  
       2022-04-22 17:47:00 +08:00
    顺便在这问个问题,nginx 反代的目标是 https 时,直接报错。。

    当时测试反代百度,直接就报错了。。是不是反代 https 网站时,还需要特殊设置,或者有些目标网站特殊设置后,就不能反代了?
    Hanada
        6
    Hanada  
       2022-04-22 21:44:15 +08:00 via Android
    @FanError 要传 sni ,proxy_ssl_server_name 和 proxy_ssl_name
    moeik
        7
    moeik  
       2022-04-22 21:50:39 +08:00
    @FanError 你反代的地址设置为 https://ip:443 这样应该就没有问题
    ophark
        8
    ophark  
       2022-04-24 12:50:58 +08:00
    proxy_pass http://$myhost/$2;
    改成
    proxy_pass $scheme://$myhost/$2;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 20:34 · PVG 04:34 · LAX 12:34 · JFK 15:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.