Nginx反向代理将/ blog映射到wordpress docker容器

时间:2020-05-01 15:54:32

标签: wordpress docker nginx

我有一个docker compose设置,用于启动数据库,wordpress和nginx容器。 Nginx容器是我的反向代理,我想将“ / blog”位置映射到wordpress容器。

我可以直接通过http://localhost:8000访问博客,但是尝试通过http://localhost/blog访问博客时出现502错误

不确定我是否缺少某些内容或设置错误。

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 个答案:

答案 0 :(得分:1)

您需要更改proxy_pass配置以指向您的wordpress容器: proxy_pass http://wordpress;

之所以可行,是因为docker-compose将为您的容器创建一个内部网络,并且所有容器都可以通过其名称在网络内进行通信。

而且,因为它在同一网络上,所以您需要使用容器使用的实际端口,而不要使用暴露的端口(这里是端口80,而不是8000)。