【问题标题】:simple nginx reverse proxy not working in docker compose简单的 nginx 反向代理在 docker compose 中不起作用
【发布时间】:2021-05-19 12:49:01
【问题描述】:

fhsmgr 代理在 / 但不能在任何其他位置使用 404

fhsdir 代理在 /dir 处给出 404,但是当我在 localhost:5000 上直接浏览到它时,我得到了预期的输出,因此主机已启动并正在运行。此外,nginx 不会像我以前看到的那样抱怨无效的主机和退出。

  • 我试过尾随 '/' 所以 '/dir/' 无济于事。
  • 我已尝试将 fhsmgr 置于“/mgr”,在索引“/”处得到预期的 404,但随后在“/mgr”处再次得到 404。
  • 我也试过不使用proxy_redirect off;
  • 我删除了上游语句,直接放入容器名称

似乎它唯一可以让我代理的地方是“/”,尽管我知道我之前已经在像这样的设置中代理到不同位置路径的其他服务器。

-- docker compose

version: "3.7"
services:
  
  fhsmgr:
    build: fhsmgr
    restart: always

  fhsdir:
    build: fhsdir
    restart: always
    ports:
      - 5000:5000

  nginx:
    build: nginx
    restart: always
    ports:
      - 80:80
    environment:
      - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
      - FHSMGR_HOST=fhsmgr
      - FHSMGR_PORT=5000     
      - FHSDIR_HOST=fhsdir
      - FHSDIR_PORT=5000   

-- nginx配置

events {}

http {

    # upstream fhsmgr {
    #     server ${FHSMGR_HOST}:${FHSMGR_PORT};
    # }

    # upstream fhsdir {
    #     server ${FHSDIR_HOST}:${FHSDIR_PORT};
    # }

    # a simple reverse-proxy
    server {

        listen 80 default_server;

        location / {
            proxy_pass http://fhsmgr:5000;
            proxy_redirect     off;
        }

        location /dir {
            proxy_pass http://fhsdir:5000;
            proxy_redirect     off;
        }
    }
}

我正在修改这个项目https://github.com/AwsGeek/lightsail-containers-nginx 以使其适用于我的用例。还没到lightsail,只是在本地使用docker compose

【问题讨论】:

    标签: docker nginx docker-compose reverse-proxy


    【解决方案1】:

    你错过了 docker-compose 中的container_name,试试这个

    version: "3.7"
    services:
      
      fhsmgr:
        build: fhsmgr
        restart: always
        container_name: fhsmgr # allow other containers to access by container_name
      
      fhsdir:
        build: fhsdir
        restart: always
        container_name: fhsdir 
        ports:
          - 5000:5000
    
      nginx:
        build: nginx
        restart: always
        ports:
          - 80:80
        environment:
          - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
          - FHSMGR_HOST=fhsmgr
          - FHSMGR_PORT=5000     
          - FHSDIR_HOST=fhsdir
          - FHSDIR_PORT=5000  
    

    【讨论】:

    • 不,不是这样,我真的认为它与 nginx 有关,主机已启动并正在运行。如果我拼错了主机名,nginx 会抛出一个错误,所以它会解析并“ping”它?
    • 所以添加 container_name 后它仍然无法正常工作?
    猜你喜欢
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2019-05-03
    • 2020-11-28
    相关资源
    最近更新 更多