我在端口8080上部署了一个Docker容器。 我将我的nginx服务器配置为指向nginx.config中的端口8080,如下所示:
server {
...
location / {
proxy_pass http://127.0.0.1:8080;
}
...
这很好,并且对服务器的调用被重定向到docker容器。
我现在需要将不同的URI路径指向不同的容器。 例如,我需要/ service1路径指向我原来的docker容器。所以我这样做了:
server {
...
location / {
}
location /service1 {
proxy_pass http://127.0.0.1:8080;
}
我在此处遵循本指南:https://gist.github.com/soheilhy/8b94347ff8336d971ad0#step-5----add-blog-and-mail
我做了nginx -s重新加载并重新启动但是当我导航到{IP_ADDRESS} / service1时出现Whitelabel错误。 Canńot理解这一点。
是否与位置/ {}是emtpy有关?
修改
根据建议我在8090上重新聚合了我的容器,并将nginx.config文件更改为:
server {
...
location / {
proxy_pass http://127.0.0.1:8080;
}
location /service1 {
proxy_pass http://127.0.0.1:8090;
}
当我将HTTP发送到[IP_ADDRESS] / service1时,我仍然得到404。
EDIT2
正如所建议的,我更改了nginx.conf文件以避免将“service1”传递给容器,但错误响应表明它仍然收到它。
nginx.conf:
location / {
}
location = /service1 {
return 302 /service1/;
}
location /service1/ {
proxy_pass http://127.0.0.1:8090;
}
错误:
{
"timestamp": "2018-04-07T09:56:44.600+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/service1/image"
}
为了清楚起见,这个错误是由Docker而不是Ngnix生成的,所以重定向工作正常吗?
答案 0 :(得分:1)
问题可能是/service1
路径传递给您的容器,然后用404响应,因为它不知道如何处理它。
请尝试从路径中删除/service1
的以下内容:
location = /service1 {
return 302 /service1/;
}
location /service1/ {
proxy_pass http://127.0.0.1:8090/;
}
请注意,尾部斜杠很重要,必须遵守。