4

如果我有一个域,例如 ,http://www.example.com并且我想将所有请求从 重定向http://www.example.com/testhttp://www.example.com:3000,我该如何正确执行它?
我尝试了以下方法:

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

但它所做的实际上是重定向http://www.example.com/testhttp://www.example.com:3000/test,这不是我想要的。
我怎样才能正确地做到这一点?

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

4

2 回答 2

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;
    }
}
于 2013-05-31T10:04:03.483 回答
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;
}
于 2013-05-31T10:07:39.347 回答