2

我有一个 VPS,其主要界面可通过两个 Internet 名称访问,我将在此将其命名为 personal.me 和 company.com。我正在运行一个 Mattermost 服务器,可以使用以下 nginx 规则通过 personal.me 访问它:

server {
    server_name personal.me;

        location / {
            client_max_body_size 50M;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Frame-Options SAMEORIGIN;
            proxy_pass http://localhost:8065;
        }
    }

这工作得很好,但我也想通过http://company.com/fora/访问实例——关键是这次有一个 /fora/ 路径要删除。我知道我应该使用 https:// 但这是另一回事,稍后再说。我试过了:

server {
    listen       80;
    server_name  company.com;

    location / {
        root   [...];
        index  index.html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location /fora/ {
        client_max_body_size 50M;
        rewrite /fora/ / break;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header   X-Frame-Options   SAMEORIGIN;
        proxy_pass http://localhost:8065;
    }
}

但是当我导航到http://company.com/fora/时,虽然标题栏更改为 Mattermost,但没有内容 --- 页面是空白的。由于我可以通过personal.me URL 访问Mattermost,我相信Mattermost 运行正常。

company.com 规则有什么问题?是否与不将路径传递到 Mattermost 有关?

根据Nginx 反向代理 (proxy_pass) 不传递子文件夹http://forum.mattermost.org/t/blank-page-when-installing-mattermost-with-nginx-proxy-pass-as-subdirectory/1604这是'不可能,但我不明白……删除一些 URL 是 nginx 的核心功能之一吗?

4

2 回答 2

1

这对于目前的 Mattermost 来说似乎是不可能的,因为应用程序假定它位于服务器根目录。

请参阅他们的 github 上的此问题此票以了解更多详细信息,并跟踪何时/如果这成为受支持的功能。

于 2016-06-23T10:17:00.150 回答
0

我们所做的是为我们想要在域上访问的每个最重要的服务创建一个子域。我建议为 a.company.com 创建一个子域,然后在您的 nginx 设置中使用该子域。

于 2018-08-10T22:53:19.643 回答