基于数据库查找的nginx动态proxy_pass

use*_*096 6 nginx nginx-reverse-proxy

我有一个带有通配符子域的网站:*.mydomain 运行 nginx。我想根据子域将 proxy_pass 到另一台服务器上的不同端口。

例如:
abc.mydomain -> proxy_pass http://otherdomain:10001
foo.mydomain -> proxy_pass http://otherdomain:10002
等等。

要重定向到的端口在数据库中,我已经可以通过调用 url 来查找它:

curl http://mydomain/getport/abc -> 10001
curl http://mydomain/getport/foo -> 10002

我的网站上有数百个子域。如何在每次访问时进行这样的动态端口查找,以便与 nginx 中的 proxy_pass 一起使用?

我当前的单个子域的 nginx 配置是这样的:

server {
    listen 80;
    server_name abc.mydomain;

    location / {
        proxy_pass http://otherdomain:10001;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 0

发现这可能有助于解决问题。使用 OpenResty,将 URI 保存到 Redis 中,并查找每个请求 URI 模式。

https://openresty.org/en/dynamic-routing-based-on-redis.html