Nginx - 将www.example.com/test重定向到www.example.com:3000/

时间:2013-05-31 09:02:24

标签: nginx routing

如果我有域名,例如http://www.example.com,我想将所有请求从http://www.example.com/test重定向到http://www.example.com:3000,我该如何正确执行? 我尝试了以下内容:

location /test {
    proxy_pass http://www.example.com:3000;
    proxy_set_header Host $host;
}

但它的作用实际上是将http://www.example.com/test重定向到http://www.example.com:3000/test,这不是我想要的。
我该怎么做呢?

更新
虽然Krizna的答案有效,但它会按预期将我重定向到我的域名 但我现在想要的是我的浏览器栏http://www.example.com/test而不是http://www.example.com:3000。如果我理解正确,我应该设置nginx以捕获响应并通过请求的url用户发回。我该怎么办呢?

2 个答案:

答案 0 :(得分:4)

试试这段代码

location / {
   rewrite ^/test(/.*)$ http://example.com:3000$1 permanent;
   proxy_set_header Host $host;
}

<强>更新 如果您不想重写URL,请尝试此代码..

server {
    --------
    server_name  www.example.com;
    location /test {
    proxy_pass http://example.com:3000;
    }
}

答案 1 :(得分:1)

proxy_redirect off应解决您的问题。它会通过但不会更改URI。

文档:http://wiki.nginx.org/HttpProxyModule#proxy_redirect

location /test {
    proxy_pass http://example.com:3000;
    proxy_set_header Host $host;
    proxy_redirect off;
}