如何在Nginx中重写而不更改地址栏中的URL

时间:2014-11-11 13:13:56

标签: nginx

我一直试图在Nginx中重写: domain.com/one/two - > onetwo.domain.com。用户看到的URL不应在地址栏中更改。

此代码无法正常运行 - 它会更改地址栏中的网址

rewrite ^/one/two/ http://onetwo.domain.com/ last;

必须有什么解决方案? 感谢。

2 个答案:

答案 0 :(得分:3)

这是不可能的,因为您正在更改主机名。浏览器安全性与Web服务器配置相关联。

您可以在同一主机名内重写网址,但更改主机名需要重定向或使用框架。

答案 1 :(得分:3)

使用代理传递:

location /one/two/ { 
    proxy_pass http://onetwo.domain.com/;
    include proxy.conf;
}

在proxy.conf中,您可以保留代理设置,例如:

proxy_ignore_client_abort off;
proxy_set_header          X-Forwarded-For $remote_addr;
proxy_connect_timeout     120;
proxy_send_timeout        900;
proxy_read_timeout        900;
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header        REQUEST_SCHEME  $scheme;
proxy_set_header        X-Forwarded-Ssl         on;
proxy_set_header        X-Forwarded-Protocol    $scheme;
proxy_set_header        X-scheme        $scheme;
proxy_set_header        X-Forwarded-Proto       $scheme;
proxy_set_header        'SERVER_PORT'   $server_port;