You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过本地域名远程访问部署在RaspberryPi上的Docker化WordPress应用

解决局域网内通过dev.nemoz.info访问树莓派WordPress的问题

先梳理下你的核心矛盾点:

  • 树莓派(192.168.1.10)上的WordPress通过Docker映射到8084端口,WP地址和站点地址都设为http://dev.nemoz.info
  • 局域网Ubuntu机器访问该域名时被拒绝,tcpdump显示请求打到了树莓派的80端口(但树莓派这个端口没有服务,所以返回RST包)
  • 你在Ubuntu上配置了Nginx反向代理,却把dev.nemoz.info的hosts指向本地127.0.0.1,这直接导致了解析和代理逻辑的混乱

下面是分步解决方法:

1. 修正Ubuntu的hosts解析规则

你的Ubuntu机器需要明确知道dev.nemoz.info对应的是树莓派的IP,而不是本地。编辑hosts文件:

sudo nano /etc/hosts

把错误的行:

127.0.0.1 dev.nemoz.info

替换为:

192.168.1.10 dev.nemoz.info

保存后刷新DNS缓存:

# 针对systemd架构的Ubuntu
sudo systemctl restart systemd-resolved
# 老版本Ubuntu可使用
sudo dscacheutil -flushcache

2. 调整Nginx反向代理的部署位置(关键优化)

你现在把Nginx装在了Ubuntu机器上,这种方式只能让这台Ubuntu访问,其他局域网设备需要单独配置hosts指向这台Ubuntu,扩展性很差。更合理的做法是把Nginx部署在树莓派上,让所有局域网设备直接解析到树莓派IP,由树莓派的Nginx把80端口请求转发给Docker的8084端口。

树莓派上部署Nginx的步骤:

  1. 安装Nginx:
sudo apt update && sudo apt install nginx -y
  1. 创建反向代理配置文件:
sudo nano /etc/nginx/sites-available/devnemoz.conf

写入以下配置:

server {
    listen 80;
    server_name dev.nemoz.info;

    location / {
        proxy_pass http://localhost:8084;
        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-Proto $scheme;
    }
}
  1. 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/devnemoz.conf /etc/nginx/sites-enabled/
sudo nginx -t  # 检查配置语法是否正确
sudo systemctl restart nginx

3. 强制WordPress使用正确的站点地址

虽然你已经在WP后台设置了不带端口的地址,但Docker环境下可能存在缓存或反向代理的适配问题,导致WP偶尔跳转到8084端口。可以直接修改容器内的wp-config.php来强制生效:

# 进入WordPress容器
docker exec -it nemoz-dev_wordpress-dev_1 bash
# 编辑配置文件
nano wp-config.php

添加以下代码段:

define('WP_HOME', 'http://dev.nemoz.info');
define('WP_SITEURL', 'http://dev.nemoz.info');
define('FORCE_SSL_ADMIN', false); // 如果未配置HTTPS请保留这行

保存后退出容器即可。

4. 验证配置结果

在Ubuntu机器上执行以下命令验证:

  • 确认解析正确:
ping dev.nemoz.info
  • 测试网站连通性:
curl -v http://dev.nemoz.info

如果返回正常的WordPress页面HTML内容,说明配置成功,此时Chrome浏览器访问http://dev.nemoz.info也能正常打开了。

内容的提问来源于stack exchange,提问作者nagard

火山引擎 最新活动