You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:53:13