docker - NGINX 反向代理 - Docker Swarm - proxy_pass 不起作用
问题描述
今天我重申你的专业知识,我是一个新手,遇到了一些让我头疼的问题。
我正在使用 TileServerGL 服务器,该服务器在 swarm 的 docker 容器中提供 OpenStreet.org 地图。该服务器工作正常,如果端口 80 暴露并重定向到,比如说 8080,我可以在 [IP Docker Swarm]:8080 访问它的内容。
现在我需要在这个容器前面添加一个反向代理来增加一些安全性(但还没有,首先我需要让反向代理工作),所以我在 docker-compose.yml 文件中添加了一个 Nginx 容器,然后我'正在尝试正确配置 nginx 反向代理的更简单版本,但没有取得多大成功。
我努力了:
- 使用 docker-compose up –build 在本地运行它
- 在我的本地机器的集群中运行: docker stack deploy -c docker-compose.yml lab
- 在 Vbox 机器中运行:docker stack deploy -c docker-compose.yml lab
域解析工作正常:
- 我的游泳IP是:192.168.1.105
- 在 etc/hosts 我有:192.168.1.105 app.io
当我在浏览器中打开http://app.io时,我会看到默认的 Nginx 欢迎页面。到目前为止,一切都很好。但是当我点击http://maps.app.io时,我仍然得到相同的默认欢迎页面。
Nginx 服务器日志:
10.255.0.2 - - [01/Dec/2018:00:55:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "-"
在阅读我在互联网上找到的每篇文章、文章、教程之前,我不会寻求您的帮助。在我看来,“nginx.conf”文件是正确的,但现实告诉我,我无疑是错的,对自己的错误视而不见。我会非常感谢你的帮助。
我在跑:
- linux Mint 19 塔拉
- Docker 版本:Docker 版本 18.09.0,构建 4d60db4
- Docker机器版本:docker-machine版本0.16.0,build 702c267f
docker-compose.yml 文件:
version: "3.5"
networks:
nginx-net:
driver: overlay
services:
maps:
image: xxxx/xxxx:mapstiles
volumes:
- ./server_mapstiles/app/data:/data
networks:
- nginx-net
deploy:
restart_policy:
condition: on-failure
replicas: 1
nginx:
image: nginx:1.15.7
container_name: nginx
ports:
- "80:80"
networks:
- nginx-net
volumes:
- ./server_nginx/nginx.conf:/etc/nginx/proxy.conf:ro
deploy:
restart_policy:
condition: on-failure
replicas: 1
depends_on:
- maps
nginx 配置文件是:
server {
listen 80;
server_name maps.app.io;
location / {
proxy_pass http://:maps:80;
proxy_redirect off;
proxy_set_header Host $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-Host $server_name;
resolver 127.0.0.11;
}
}
解决方案
您的指令有一些令人讨厌的无效语法proxy_pass
。
proxy_pass http://:maps:80;
不是有效的代理传递目的地,http://:maps:80
因为 . 之后的第一个冒号而失败//
。
尝试proxy_pass http://maps:80;
但请记住使用主机名定义位置/代理传递目标/等的 NGINX 配置陷阱。
推荐阅读
- python - 尝试将 Discord 消息桥接到 Telegram
- php - 从一个读取并写入第二个excel文件 - PHP
- c++ - 类数组插入函数
- mysql - Prestashop SQL 修改以另一个表为条件的表
- wso2 - WSO2 StreamProcessor:有没有办法使用 SiddhiApp 中的证书连接到 MQTT
- sql - 如何在 SQL 中不使用 DISTINCT 删除重复值?
- google-calendar-api - 谷歌日历 webhook 测试
- java - 从在 Azure Active Directory 中完成身份验证的主体访问电子邮件 ID
- r - 在 Sparklyr 中使用 ml_fpgrowth 选择支持和置信度值
- shell - Shell脚本是数值控制