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.
并且没有关于错误或访问日志的更多详细信息。
非常感谢您能给我带来的任何额外帮助。
我是 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.
并且没有关于错误或访问日志的更多详细信息。
非常感谢您能给我带来的任何额外帮助。