NGINX反向代理-Docker Swarm-proxy_pass不起作用

时间:2018-12-01 00:50:29

标签: docker nginx nginx-reverse-proxy

今天,我将继续向您介绍我的专业知识,我是一个新手,遇到了一些麻烦,真是令人头疼。

我正在使用TileServerGL服务器,该服务器在一群人的Docker容器中提供OpenStreet.org映射。该服务器运行良好,如果将端口80公开并重定向到8080,我可以在[IP Docker Swarm]:8080上找到其内容。

现在,我需要在此容器前面添加一个反向代理以增加一些安全性(但还没有,首先我需要使反向代理正常工作),因此我将Nginx容器添加到docker-compose.yml中文件,并且我尝试正确配置nginx反向代理的简化版本,但没有成功。

我尝试过:

  • 使用docker-compose up –build
  • 在本地运行
  • 使用以下命令在本地计算机的群集中运行:docker stack deploy -c docker-compose.yml实验室
  • 在Vbox计算机内部运行:docker stack deploy -c docker-compose.yml实验室

域解析工作正常:

  • 我的游泳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 Tara
  • Docker版本:Docker 18.09.0版,内部版本4d60db4
  • Docker机器版本:docker-machine版本0.16.0,内部版本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 conf文件为:

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;
        }
}

1 个答案:

答案 0 :(得分:0)

您的proxy_pass指令中有一些令人讨厌的无效语法。

proxy_pass http://:maps:80;不是有效的代理传递目的地,http://:maps:80会因为在//之后的第一个冒号而失败。

尝试proxy_pass http://maps:80;,但请记住using a hostname to define a location/proxy pass destination/etc.的NGINX配置陷阱