2012-10-02 79 views
2

我有一个nginx作为两个服务器的代理,一个运行Websphere Portal Server和一个运行在Jboss服务器上的Spring。nginx proxy_pass到Jboss + Spring/Websphere + Portal项目

我目前有一定的要求的代理问题,比如,我有以下几点:

server{ 
    listen:8080; 
    server_name:localhost; 

    location /jbossSpring/ { 
     proxy_pass http://177.21.1.15:9000/Spring_project/; 
    } 

    location /webspherePortal/ { 
     proxy_pass http://177.21.1.15:9400/Portal_project/; 
    } 
} 

现在,这确实从localhost:8080/jbossSpring/localhost:8080/webpsherePortal/代理正确,但是,网页我得到继续请求位于localhost:8080/Spring_project/localhost:8080/Portal_project/上的文件。

反正我有办法在nginx中处理这些吗?还是必须修改Spring/Portal项目以获取正确的URL? (路径可能依赖呢?)

回答

1

您可以通过使用http重写模块,在ngx_http_rewrite_module

记录举个想法达到这个结果,我想你重写应类似于下(我没有验证这一点)

server { 
    ... 
    rewrite ^/Spring_project/(.*) /jbossSpring/$1 last; 
    rewrite ^/Portal_project/(.*) /webspherePortal/$1 last; 
    ... 
} 
+0

以及我正在重写aswell,非常类似于你在那里,但问题似乎是它现在也发送端口从其他服务器我试图代理,而不是设置我试图访问的网址的端口:| –

+0

你说得对,我当然错过了港口。也许在这种情况下,将“port_in_redirect”指令设置为“off”并尝试在目标URL中指定端口可能会有所帮助。 –