1

我有一个在 docker 上运行的项目。我使用 Nginx 反向代理来运行我的应用程序。一切正常,但试图个性化 nginx 上的 server_name 但无法弄清楚如何。

Docker yml 文件我已通过 docker 将服务器名称添加到 /etc/hosts

version: "3"

services:
  nginx:
    container_name: nginx
    volumes:
      - ./nginx/logs/nginx:/var/log/nginx
    build:
      context: ./nginx
      dockerfile: ./Dockerfile
    depends_on:
      - menu-app
    ports:
      - "80:80"
      - "433:433"
    extra_hosts:
      - "www.qr-menu.loc:172.18.0.100"
      - "www.qr-menu.loc:127.0.0.1"
    networks:
      default:
        ipv4_address: 172.18.0.100

  menu-app:
    image: menu-app
    container_name: menu-app
    volumes:
      - './menu-app/config:/var/www/config'
      - './menu-app/core:/var/www/core'
      - './menu-app/ecosystem.json:/var/www/ecosystem.json'
      - './menu-app/tsconfig.json:/var/www/tsconfig.json'
      - './menu-app/tsconfig-build.json:/var/www/tsconfig-build.json'
      - "./menu-app/src:/var/www/src"
      - "./menu-app/package.json:/var/www/package.json"
    build:
      context: .
      dockerfile: menu-app/.docker/Dockerfile
    tmpfs:
      - /var/www/dist
    ports:
      - "3000:3000"
    extra_hosts:
      - "www.qr-menu.loc:127.0.0.1"
      - "www.qr-menu.loc:172.18.0.100"
networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: 172.18.0.0/24

我有 Nginx conf

server_names_hash_bucket_size 1024;

upstream local_pwa {
    server menu-app:3000;
    keepalive 8;
}
server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name www.qr-menu.loc 172.18.0.100;
            proxy_buffer_size 128k;
            proxy_buffers 4 256k;
            proxy_busy_buffers_size 256k;
            location / {
                proxy_set_header    X-Forwarded-For $remote_addr;
                proxy_pass http://local_pwa/;
            }
        }

但不幸的是,应用程序在 localhost 而不是www.qr-menu.loc上运行

我不知道如何在 Nginx 上更改 server_name。

4

1 回答 1

1

这是一个非常非常晚的答案。server_name 指令告诉 nginx 在收到请求时使用哪个配置块。另请参阅: http: //nginx.org/en/docs/http/server_names.html

我认为 docker-compose extra_hosts 指令可能仅适用于 docker 网络中的域名解析。换句话说,在运行 docker 的计算机上,名称“www.qr-menu.loc”不可用,但在运行的 docker 容器中,该名称应该可用。

于 2021-10-04T12:39:26.350 回答