我正在为 WordPress 启动一个 Docker 容器本教程。我在办公桌上的一台机器上运行它,我拥有完全访问权限。它运行的是 Ubuntu 20.04。
这是我的docker-compose.yml
参考。
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: dbpassword
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "12130:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: dbpassword
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
(密码已替换)
当我运行 时docker-compose up -d
,容器启动,服务器在 可用127.0.0.1:12130
,我可以配置和安装 WordPress。在托管应用程序的机器上,一切都运行正常。
当我尝试从其他设备访问该网站时,博客会加载,但没有样式。我猜想这是因为“网站地址”配置为http://127.0.0.1:12130
,因此当浏览器尝试获取样式表时,它会转到那里,从而导致 404 错误。
我认为这里的解决方案是配置 nginx 以向应用程序提供公共地址,并将“站点地址”和“WordPress 地址”更改为该地址。一旦我这样做,整个服务将完全无法访问。我必须销毁数据并docker-compose down --volumes
从头开始安装。
作为参考,这是我的完整版本/etc/nginx/conf.d/default.conf
,我删除了其他所有内容。我还停止了所有其他 Web 服务,因此只有 WordPress 在运行。
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
server {
listen 443 ssl;
server_name sub.mydomain.org;
location / {
proxy_pass http://127.0.0.1:12130;
}
}
如果我尝试https://sub.mydomain.org
使用 Firefox 访问,它会将我重定向到127.0.0.1
(无端口) 并显示标准的“无法连接”页面。如果我,它会退出,没有输出也没有错误。我直接使用和curl https://sub.mydomain.org
会得到相同的错误,它们都只是将我重定向到,无端口,并且无法连接或返回空。127.0.0.1:12130
localhost:12130
127.0.0.1
此时,如果我等待几分钟,在 Firefox 中访问127.0.0.1:12130
或https://sub.mydomain.org
会导致页面无限重新加载。这种情况是可以重复的,我已经多次执行此过程以确保我所获得的信息正确无误。在最初几分钟,它只是重定向到127.0.0.1
并死机,然后它开始无限重新加载,而无需我更改任何配置文件或重新启动任何服务。
最后一点。如果我打开 nginx前更改“站点地址”设置后,我可以从网络外部正常访问服务器,但和以前一样,样式无法加载。所以 nginx 正在做一些事情。而且它对我托管的其他服务器运行良好。
这里发生了什么?
为什么我修改了“网站地址”和“WordPress地址”后,无法访问服务器?
- 我尝试修改“站点地址”和“WordPress 地址”设置是否完全走错了路?
- 如果我应该修改这些,为什么服务器会表现这样?
- 是不是我的nginx配置有问题?
- 我的 WordPress 配置错误吗?
- 还有什么问题吗?
- 或者它是完全不同的东西?
我对自托管还很陌生,如果我没有看到明显的解决方案,我深表歉意。感谢您的耐心。
答案1
事实证明我需要在我的 nginx 配置中设置一些标题。这个帖子帮助我发现了这一点。
现在我的配置看起来像这样。
server {
listen 443 ssl;
server_name sub.domain.org;
location / {
proxy_pass http://127.0.0.1:12130;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
proxy_set_header Proxy "";
}
}
设置“站点地址”和“WordPress 地址”后,一切似乎都正常。
我想做更多研究来了解这里到底发生了什么以及为什么有必要这样做。如果有人愿意在评论中解释,我将不胜感激。
答案2
我遇到了类似的问题。感谢您的帖子,我找到了一个似乎更简单的解决方案 - 至少对我来说。如果您根本不想使用 nginx,您也可以在 wordpress 中将您的本地 IP 地址配置为“站点地址”。
就我而言:
WordPress 地址:http://192.168.178.21:12130
网站地址 http://192.168.178.21:12130
这已经解决了问题,这意味着您将能够在网络中的所有机器上的浏览器中使用例如 192.168.178.21:12130 访问您的 wordpress 网站 - 该网站将正确加载 - 没有 404。
但是,如果你的 IP 发生变化,你必须调整该地址。在这种情况下,你的方法可能更合适。