簡體   English   中英

Docker Compose,nginx配置無法將“ varnish”解析為主機名

[英]Docker Compose, nginx config isnt able to resolve “varnish” as hostname

我有以下設置:

version: '2'

services:
  web:
    build: ./nginx
    links:
      - "php"
    ports:
      - "8080:80"
      - "443:443"
    volumes:
      - ./build:/var/www/magento/build/
      - ./vagrant/tools:/var/www/tools

  php:
    image: php:7.2-fpm
    volumes:
      - ./build:/var/www/magento/build/
      - ./vagrant/etc/php/7.1/fpm/conf.d/90-custom.ini:/etc/php-fpm/fpm/conf.d/90-custom.ini
      - ./vagrant/etc/php/7.1/cli/conf.d/90-custom.ini:/etc/php-fpm/cli/conf.d/90-custom.ini
      - ./vagrant/etc/php/7.1/fpm/pool.d/www_ps.conf:/etc/php-fpm/fpm/pool.d/www_ps.conf
    links:
      - "cache"
      - "mysql"

  solr:
    build: ./solr
    ports:
      - "8983:8080"
    links:
      - "mysql"
    volumes:
      - solr0-data:/var/solr/core0/data/

  varnish:
    build: ./varnish
    ports:
      - "80:80"
    links:
      - "web"
      - "php"

  mysql:
    image: mariadb:latest
    ports:
        - "3306:3306"
    environment:
          - MYSQL_ROOT_PASSWORD=xxx
          - MYSQL_DATABASE=xxx
    volumes:
      - mysql:/var/lib/mysql

  cache:
      build: ./redis
      ports:
        - "6379:6379"

  session:
      build: ./redis
      ports:
        - "6389:6379"


volumes:
  solr0-data:
  mysql:

在我的nginx-config文件中,我使用:

# Varnish
upstream varnish_com  {
    keepalive 100;
    server varnish;
}

在同一文件中的用法:

server {
    listen          443 http2;

    server_name     www.cs.test;
    ssl_certificate /etc/ssl/nginx.pem;
    ssl_certificate_key /etc/ssl/nginx.key;
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 180m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers MD5:ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH;

    rewrite ^/(nl|fr|es|it|en)/(.*)$ /$2 last;

    location / {

       ...
        proxy_pass              http://varnish_com;
    }
}

在控制台上輸出:

web_1      | 2018/07/02 15:39:31 [emerg] 1#1: host not found in upstream "varnish" in /etc/nginx/sites-enabled/com.localhost:5
web_1      | nginx: [emerg] host not found in upstream "varnish" in /etc/nginx/sites-enabled/com.localhost:5
xxx_web_1 exited with code 1

為什么Nginx無法將“清漆”解析為主機? AFAIK Docker自動別名化主機名,以避免IP繁忙。 但是,nginx似乎無法完全解析“ varnish”作為主機名,因此無法將http:// varnish_com解析http:// [IP OF VARNISH CONTAINER]。 :(

更新您的docker-compose文件以使用清漆,例如:

varnish:
    hostname: varnish_com
    build: ./varnish

基本上,我已經添加了主機名。 現在,您的Docker容器將不會獲得一些隨機名稱。 希望它應該解決所提到的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM