NGINX配置:

时间:2017-06-23 22:40:55

标签: nginx

我是NGINX的新手,我正在努力平衡我们的ERP网络服务器。 我有3个webserver在端口80上运行,由websphere驱动,这对我来说是一个黑盒子:

* web01.example.com/path/apphtml
* web02.example.com/path/apphtml
* web03.example.com/path/apphtml

NGINX正在侦听虚拟URL ourerp.example.com并将其代理到群集。

这是我的配置:

upstream myCluster {
    ip_hash;
    server web01.example.com:80;
    server web02.example.com:80;
    server web03.example.com:80;
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  ourerp.example.com;
    location / {
        rewrite ^(.*)$  /path/apphtml break;
        proxy_pass       http://myCluster;
    }
}

当我只使用proxy_pass时,NGINX负载均衡但转发请求到web01.example.com而不是web01.example.com/path/apphtml

当我尝试添加网址重写时,它只是重写虚拟网址,我最终得到了ourerp.example.com/path/apphtml。

是否可以在上游级别进行URL重写,或者将路径附加到上游级别的应用程序?

1 个答案:

答案 0 :(得分:0)

如果您尝试通过代理将/映射到/path/apphtml/,请使用:

proxy_pass http://myCluster/path/apphtml/;

有关详情,请参阅this document

您的rewrite语句的问题是替换字符串末尾缺少$1。有关详情,请参阅this document,但正如我上面所说,您不需要rewrite语句,因为proxy_pass语句无论如何都能够执行相同的工作。