Ubuntu下Docker-Compose配置WordPress指定端口失败求助
WordPress站点修改Nginx端口映射后无法访问的解决方法
我通过Docker-Compose配置的WordPress站点,使用80端口时访问http://<my_server_ip>正常打开,但将docker-compose.yml中Nginx的端口映射从"80:80"改为"8070:80"后,访问http://<my_server_ip>:8070无响应。以下是我的配置文件,请问如何正确配置指定端口?
配置文件
~/mysite/docker-compose.yml
version: "3.9" services: wordpress: image: wordpress:latest restart: always volumes: - ./wp-content:/var/www/html/wp-content environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: secret WORDPRESS_DB_NAME: wordpress depends_on: - db networks: - wp-net db: image: mysql:5.7 restart: always volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: secret networks: - wp-net nginx: image: nginx:latest restart: always volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./wp-content:/var/www/html/wp-content:ro ports: - "80:80" depends_on: - wordpress networks: - wp-net networks: wp-net: volumes: db_data:
~/mysite/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { proxy_pass http://wordpress:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } }
解决步骤
1. 确认目标端口未被占用
在服务器终端执行以下命令,检查8070端口是否被其他进程占用:
ss -tulpn | grep 8070
如果有输出结果,说明端口被占用,需要更换未被占用的端口,或者停止占用该端口的进程。
2. 开放防火墙/安全组端口
确保服务器的防火墙或云服务商安全组允许8070端口的TCP入站流量:
- UFW防火墙:
sudo ufw allow 8070/tcp - Firewalld防火墙:
sudo firewall-cmd --add-port=8070/tcp --permanent sudo firewall-cmd --reload
3. 修复Nginx代理头配置
WordPress依赖请求头中的端口信息生成正确的链接,需要调整Nginx配置传递正确的端口参数:
修改~/mysite/nginx.conf中的server块内容:
server { listen 80; server_name localhost; location / { proxy_pass http://wordpress:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } }
4. 更新WordPress站点URL
WordPress数据库中存储的站点URL还是原80端口,需要修改为新的端口地址:
- 方式一:使用WP-CLI命令
docker-compose exec wordpress wp option update siteurl "http://<my_server_ip>:8070" docker-compose exec wordpress wp option update home "http://<my_server_ip>:8070" - 方式二:直接修改数据库
# 进入MySQL容器 docker-compose exec db mysql -u root -psomewordpress # 在MySQL命令行执行: USE wordpress; UPDATE wp_options SET option_value = 'http://<my_server_ip>:8070' WHERE option_name IN ('siteurl', 'home'); exit;
5. 重启服务生效
修改配置后,重启所有Docker服务:
docker-compose down docker-compose up -d
完成以上步骤后,访问http://<my_server_ip>:8070即可正常打开WordPress站点。
内容的提问来源于stack exchange,提问作者Lemec Cinq
相关产品推荐
相关产品推荐

