我有一个 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/