Nginx:从 url 到子域的动态代理

Nginx: dynamic proxy from url to subdomain

我正在尝试编写一个 nginx conf 以根据 uri 将 url 动态重定向到一个 webapp。我使用 proxypass 指令。 例如,我想要重定向 http://www.example.com/clientname/ to http://clientname.internaldomain.local/webapp

到目前为止,我只成功更换了新主机,但uri已损坏,因为我无法拆分它。 (现在连主机都换不了,不知道为什么...)

这是我实际的非工作配置:

    server {
       resolver 192.168.137.71;
       listen   80;
       server_name     tomservpa1;

    location  ~ (^\/(.*)\/) {

                set $ccehost ;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Host $host;
                proxy_set_header        X-Forwarded-Server $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_pass              http://$ccehost.internaldomain.local:9780/webapp/$new_request_uri;
                proxy_redirect          off;
                proxy_set_header        Host $host;
        }

}

有人做过类似的事情吗?

谢谢。

您可以在 location 指令中使用命名捕获以避免范围和歧义问题。例如:

location ~ ^/(?<ccehost>[^/]+)/(?<new_request_uri>.*)$ {
    rewrite ^ /webapp/$new_request_uri break;
    ...
    proxy_pass http://$ccehost.internaldomain.local:9780;
    ...
}

这是方法:(在生产中设置)

    location ~* ^/(?<ccehost>.*)/(.*) {
           proxy_intercept_errors on;
           proxy_cookie_path ~*^/.* /;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_pass http://$ccehost.app.ptf:8080/app/;
    }