Nginx обратный прокси на карту / блог в wordpress docker контейнер - PullRequest
0 голосов
/ 01 мая 2020

У меня есть docker compose setup, которая запускает базу данных, WordPress и nginx контейнер. Контейнер nginx является моим обратным прокси-сервером, и я хочу сопоставить местоположение "/ blog" с контейнером wordpress.

Я могу получить доступ к блогу напрямую через http://localhost: 8000 , но ошибка 502 при попытке получить доступ к блогу через http://localhost/blog

Не уверен, что я что-то упустил или в моей настройке есть ошибка.

docker -compose.yml

version: '3.3'

services:
   wpdb:
     image: mysql:5.7
     container_name: wpdb
     volumes:
       - wpdb_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - wpdb
     image: wordpress:latest
     container_name: wordpress
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: wpdb:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress

   nginx: 
    depends_on:
      - wordpress
    image: nginx:latest
    container_name: nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 80:80
      #- 443:443

volumes:
    wpdb_data: {}

nginx .conf

events {

}

http {
  #error_log /etc/nginx/error_log.log warn;
  #client_max_body_size 20m;

  #proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1000m;

  server {
    server_name localhost;

    location /blog {
      proxy_pass http://localhost:8000;
      rewrite ^/blog(.*)$ $1 break;
    }
  }
}

1 Ответ

1 голос
/ 01 мая 2020

Вам нужно изменить конфигурацию proxy_pass так, чтобы она указывала на ваш контейнер WordPress: proxy_pass http://wordpress;.

Это работает, потому что docker -compose создаст внутреннюю сеть для ваших контейнеров, и все контейнеры смогут связываться по их имени внутри сети.

И, поскольку он находится в одной сети, вы нужно использовать реальное использование порта контейнером, а не тем, который выставлен (здесь порт 80, а не 8000).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...