wordpress - Nginx 反向代理将映射/博客映射到 WordPress docker 容器

标签 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;
    }
  }
}

最佳答案

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

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

而且,因为它位于同一网络上,所以您需要使用容器使用的真实端口,而不是暴露的端口(此处为端口 80,而不是 8000)。

关于wordpress - Nginx 反向代理将映射/博客映射到 WordPress docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61545965/

相关文章:

php - 如何从 WordPress 中的插件 php 编辑 mySQL wp_posts 表?

php - 通过 ACF 关系字段的 WordPress 查询

mysql - ECS 上的 WordPress - 无法连接到 mysql 容器

docker - Docker MEAN堆栈使用哪个FROM?

基于正则表达式的NGINX别名路径

wordpress - 删除没有特色图片的 woocommerce 产品

python-3.x - DataDriver 库方法 _stats_suite 失败 : TypeError: 'encoding' is an invalid keyword argument for this function

docker - ACME 证书超时与 traefik

nginx - OpenResty auto_ssl太长lua代码块错误

macos - nginx docker容器上的连接被拒绝