Nginx 反向代理 - 内部服务器由尾部斜杠分隔

Nginx reverse proxy - Internal servers separated by trailing slash

我是 Nginx 的新手,一直在寻找我问题的正确答案,但找不到;不是因为它不存在,而是我的新手条件限制了我采用通用解决方案来解决我的问题。

情况是这样的: 我的私人 LAN (http://10.111.111.12) 中有一个 Mantis Bug Tracker。 另一方面,我的 LAN 上也有一个 OwnCloud 网站(IP 10.111.111.5),URL http://10.111.111.5/owncloud/.

我想做的是部署一个 Nginx 反向代理来处理来自 publicdomain.com 的互联网的所有请求,并为每个内部网络服务器使用尾部斜杠。期望的结果是:

http://www.publicdomain.com/bugtracker -> redirects to http://10.111.111.12/index.php http://www.publicdomain.com/cloud -> 重定向到 http://10.111.111.5/owncloud/(注意“cloud”优先于“owncloud”)

以后要部署的其他web服务器需要继续使用尾斜杠。

问题是: 这种情况可能吗?如果是这样,配置 nginx 是否足够,或者我还必须重新配置内部 Web 服务器?

非常感谢您的帮助,为我指明了可能的解决方案或为我指明了之前帖子的正确方向。

非常感谢。

是的,可以实现这样的配置,它通常在 NGINX 作为反向代理时使用。您可以使用此配置作为构建您自己的配置的灵感:

upstream bugtracker {
  server 10.111.111.12;
}

upstream cloudupstream {
  server 10.111.111.5;
}

server {
  listen 80;
  location /bugtracker/{
    proxy_pass http://bugtracker;
  }
  location /cloud/{
    proxy_pass http://cloudupstream/owncloud;
  }
}

这里发生的事情是 nginx 将在端口 80 上侦听,一旦请求路径 /bugtracker,它会自动将请求路由到上面提到的上游服务器。使用它,您可以根据需要添加任意数量的上游服务器和位置块。 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

非常感谢 Namam 的快速回答。但是,它还没有工作。上游指令中的“服务器”似乎不允许斜杠,如下所示: server 10.111.111.5/owncloud;

如果我用了,我得到了 nginx: [emerg] invalid host in upstream "10.111.111.5/owncloud" in /etc/nginx/nginx.conf:43

我只从第一个上游错误跟踪器开始,并且 nginx.conf 像这样:

    upstream bugtracker {
        server 10.111.111.12;
    }

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  localhost;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
    }

    location /mstic{
        proxy_pass http://bugtracker;
    }
        
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

之后,当访问我的 Nginx 反向代理时 http://10.111.111.10/mstic/ 我得到以下信息: Not Found The requested URL /mstic/ was not found on this server. 并且没有关于错误或访问日志的更多详细信息。

非常感谢您能给我带来的任何额外帮助。