如何将位置映射到 Nginx 中的上游服务器?
How do I map a location to an upstream server in Nginx?
我有几个 Docker 容器充当桥接网络上的 Web 服务器。我想使用 Nginx 作为代理,它在桥接网络之外公开服务(网络)并使用服务器端包含从其他服务(即 wiki)嵌入内容。
长话短说,我正在尝试使用以下配置,但我的位置无法正常工作。 / 位置工作正常,但是当我添加另一个位置(例如 /wiki)或更改 /更具体的东西(例如 /web)我从 Nginx 收到一条消息,说它分别是 "Can't get /wiki" 或 "Can't get /web":
events {
worker_connections 1024;
}
http {
upstream wiki {
server wiki:3000;
}
upstream web {
server web:3000;
}
server {
ssi on;
location = /wiki {
proxy_pass http://wiki;
}
location = / {
proxy_pass http://web;
}
}
}
我已附加到 Nginx 容器并验证我可以使用 CURL 访问其他容器 - 它们似乎工作正常。
我也读过 Nginx 陷阱,知道使用主机名(wiki、web)并不理想,但我不知道提前的 IP 地址,并试图通过告诉来解决任何 DNS 问题docker-构成nginx容器依赖web和wiki
有什么想法吗?
您必须将 proxy_pass http://wiki;
变为 proxy_pass http://wiki/;
。
据我所知,Nginx 会在 uri 末尾采用两种不同的方式 with/without 反斜杠。您可能会在 nginx.org.
上找到 more details about proxy_pass
directive
在您的情况下,反斜杠 (/
) 作为要传递给服务器的 uri 是必不可少的。您已经收到错误消息 "Can't get /wiki"。其实这个报错的意思是server wiki:3000
里面没有/wiki
,Nginx作用域里没有
更好地了解 proxy_pass 指令 with/without uri 会对你有很大帮助。
我希望这会有所帮助。
我有几个 Docker 容器充当桥接网络上的 Web 服务器。我想使用 Nginx 作为代理,它在桥接网络之外公开服务(网络)并使用服务器端包含从其他服务(即 wiki)嵌入内容。
长话短说,我正在尝试使用以下配置,但我的位置无法正常工作。 / 位置工作正常,但是当我添加另一个位置(例如 /wiki)或更改 /更具体的东西(例如 /web)我从 Nginx 收到一条消息,说它分别是 "Can't get /wiki" 或 "Can't get /web":
events {
worker_connections 1024;
}
http {
upstream wiki {
server wiki:3000;
}
upstream web {
server web:3000;
}
server {
ssi on;
location = /wiki {
proxy_pass http://wiki;
}
location = / {
proxy_pass http://web;
}
}
}
我已附加到 Nginx 容器并验证我可以使用 CURL 访问其他容器 - 它们似乎工作正常。
我也读过 Nginx 陷阱,知道使用主机名(wiki、web)并不理想,但我不知道提前的 IP 地址,并试图通过告诉来解决任何 DNS 问题docker-构成nginx容器依赖web和wiki
有什么想法吗?
您必须将 proxy_pass http://wiki;
变为 proxy_pass http://wiki/;
。
据我所知,Nginx 会在 uri 末尾采用两种不同的方式 with/without 反斜杠。您可能会在 nginx.org.
上找到 more details about proxy_pass
directive
在您的情况下,反斜杠 (/
) 作为要传递给服务器的 uri 是必不可少的。您已经收到错误消息 "Can't get /wiki"。其实这个报错的意思是server wiki:3000
里面没有/wiki
,Nginx作用域里没有
更好地了解 proxy_pass 指令 with/without uri 会对你有很大帮助。
我希望这会有所帮助。