将网址映射到子网域(NGINX)

时间:2013-03-11 14:44:16

标签: php configuration nginx subdomain configuration-files

我知道这个问题已经asked before on SO,但我在服务器上复制它时遇到了麻烦。

我要做的是当用户转到medicine.example.com时,子域应该映射到example.com/sites/medicine。因此,用户看到的网址是medicine.example.com。 index.php通过PHP剥离。

以下代码给出了502 bad gateway错误。

server {
    listen      80;
    listen      443 ssl;
    server_name medicine.example.com;

    location / {
        rewrite             ^([^.]*[^/])$ $1/ permanent;
        proxy_pass_header   Set-Cookie;
        proxy_pass          https://example.com/sites$request_uri;
    }
}

理想情况下,解决方案是基于通配符/正则表达式,以便不仅可以映射medicine.example.com。想法?

2 个答案:

答案 0 :(得分:0)

我相信如果您希望浏览器中的URL保持不变,则无需进行重写。所以你只需要这个(@Jack在$ uri前面有一个额外的/。)

$ scheme应该返回http或https,具体取决于用户输入的内容

server {
    listen      80;
    listen      443 ssl;
    server_name medicine.example.com;

    location / {
        proxy_pass     $scheme://example.com/sites/medicine$request_uri
}

这是$ uri与$ request_uri的链接。基本上$ uri不包括参数。 http://wiki.nginx.org/HttpCoreModule#.24request_uri

答案 1 :(得分:0)

额外路径将自动转发到上游服务器。所以不需要附上$ request_uri。 Nginx很简单。

location / {
    proxy_pass     http://example.com/sites/medicine
}

[edit]也不需要为上游服务器使用https,因为它浪费了ssl协商的资源。使用http更好,因为您的上游服务器是内部的。交通安全。