V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wdssmq
V2EX  ›  问与答

Nginx 反代的问题「虽然感觉不支持这么用?」

  •  
  •   wdssmq · 2021-10-19 11:55:41 +08:00 · 1534 次点击
    这是一个创建于 1117 天前的主题,其中的信息可能已经有所发展或是发生改变。
    upstream rsshub1024 {
        server vercel.getrss2021.xyz;
        server rsshub.rssforever.com;
        server rsshub.app;
    }
    
    location /rsshub/ {
        # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $proxy_host; # 这里值是 rsshub1024
        proxy_redirect off;
        proxy_pass http://rsshub1024/;
    }
    

    需求就是反代 + 负载均衡多个 RSSHub 实例,然后选中某个域名时同时能提取到该域名传值给 Host

    第 1 条附言  ·  2021-10-20 12:11:45 +08:00

    使用 map 改写如下,如遇这样写的话,问题就变成了,如何把 $args 换成随机取值的东西从而使$pick取值随机;

    # 这里好像不能用 set
    map $args $pick {
        default  rss.shab.fun;
        pick2    rsshub.app;
    }
    
    upstream rss.shab.fun {
        server rss.shab.fun;
    }
    
    upstream rsshub.app {
        server rsshub.app;
    }
    
    server {
        listen 80 default_server;
        server_name  _ *.vm docker;
        root "/app";
        index index.php;
        # 这里可以用 set 但是不能用 map ??
        location /rsshub/ {
            # default_type text/plain;
            # echo pick: $pick;
    
            proxy_set_header Host $pick;
            proxy_redirect off;
            proxy_pass http://$pick/;
        }
    }
    
    
    1 条回复    2021-10-20 09:40:17 +08:00
    PriestTomb
        1
    PriestTomb  
       2021-10-20 09:40:17 +08:00
    虽然没理解你说的“选中某个域名时”指的是什么,不过你的问题大概可以用 if 语法实现,或者用 map
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:58 · PVG 07:58 · LAX 15:58 · JFK 18:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.