0

我知道这个问题之前已经在 SO 上提出过,但我无法在我的服务器上复制它。

我要做的是当用户访问时medicine.example.com,子域应该映射到example.com/sites/medicine. 所以用户看到的 URL 是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可以映射。想法?

4

2 回答 2

0

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

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

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

于 2013-03-14T14:13:00.847 回答
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

于 2013-03-14T08:20:38.740 回答