此服务器上未启用 HTTP 环回连接 - docker 上的 wordpress
HTTP Loopback Connections are not enabled on this server - wordpress on docker
我有一个 wordpress 官方容器,其停靠端口 80 映射到外部 32795...当我转到 wordpress 的管理区域时,我收到此错误:
重要提示:此服务器上未启用 HTTP 环回连接。如果您需要联系您的网站托管服务商,请告诉他们当 PHP 尝试连接回位于 URL http://localhost:32795/wp-admin/admin-ajax.php
的站点时出现错误 cURL error 7: Failed to connect to localhost port 32795: Connection refused
。服务器配置可能存在问题(例如本地 DNS 问题、mod_security 等),导致连接无法正常工作。
我认为问题在于容器内的站点试图与 32795 端口而不是 80 端口通信,但它不能,因为这扇门只能从容器外部看到...
我使用 phpinfo 在站点内创建了一个脚本,并检查了环回连接是否打开...
有解决办法吗?我有 docker un windows 和 kitematic
谢谢
问题出在容器内部打开的端口是 80
并且 docker 正在暴露 32795
用于外部连接
Wordpress 配置指向端口 32795
,您可以通过 docker run -p 80:80
公开端口 80
并更改 wordpress 配置以使用端口 80
如果你不能使用端口 :80
稍微复杂一点的解决方案是在内部使用 iptables
端口转发
例子
➜ ~ docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW -p 5000:80 nginx
835b039cc92bd9f32b960181bf370d39869c88f5a757423966b467fe01ac219e
➜ ~ docker exec -it 835b039cc92bd9 bash
root@835b039cc92b:/# apt update -qqq ; apt install iptables -yqqq
root@835b039cc92b:/# iptables -t nat -A OUTPUT -o lo -p tcp --dport 5000 -j REDIRECT --to-
port 80
root@835b039cc92b:/# apt install telnet -yqqq
root@835b039cc92b:/# telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
root@835b039cc92b:/# exit
# from outside the container
➜ ~ telnet localhost 5000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
我在 Windows 的 Docker 桌面上遇到了类似的问题 运行 WordPress 和 Nginx。我需要在容器的 hosts
文件中添加一个条目,指示我的 local.example.com
域访问我的 ingress-nginx 控制器,这样 WordPress 的环回请求才能工作。尽管我的设置可能略有不同,但这可能对您有所帮助。
打开 /Windows/System32/drivers/etc/hosts
并复制 host.docker.internal
旁边的 IP 地址。通过执行以下操作之一,在启动时向容器的 hosts
文件添加一个条目,将域与主机 IP 联系起来。 IP
是您通过 host.docker.internal
从计算机的主机文件中复制的内容
Docker 参数:
--add-host="local.example.com:IP"
Docker撰写:
extra_hosts:
- "local.example.com:IP"
Kubernetes:
hostAliases:
- ip: "IP"
hostnames:
- "local.example.com"
我有一个 wordpress 官方容器,其停靠端口 80 映射到外部 32795...当我转到 wordpress 的管理区域时,我收到此错误:
重要提示:此服务器上未启用 HTTP 环回连接。如果您需要联系您的网站托管服务商,请告诉他们当 PHP 尝试连接回位于 URL http://localhost:32795/wp-admin/admin-ajax.php
的站点时出现错误 cURL error 7: Failed to connect to localhost port 32795: Connection refused
。服务器配置可能存在问题(例如本地 DNS 问题、mod_security 等),导致连接无法正常工作。
我认为问题在于容器内的站点试图与 32795 端口而不是 80 端口通信,但它不能,因为这扇门只能从容器外部看到...
我使用 phpinfo 在站点内创建了一个脚本,并检查了环回连接是否打开...
有解决办法吗?我有 docker un windows 和 kitematic
谢谢
问题出在容器内部打开的端口是 80
并且 docker 正在暴露 32795
用于外部连接
Wordpress 配置指向端口 32795
,您可以通过 docker run -p 80:80
公开端口 80
并更改 wordpress 配置以使用端口 80
如果你不能使用端口 :80
稍微复杂一点的解决方案是在内部使用 iptables
端口转发
例子
➜ ~ docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW -p 5000:80 nginx
835b039cc92bd9f32b960181bf370d39869c88f5a757423966b467fe01ac219e
➜ ~ docker exec -it 835b039cc92bd9 bash
root@835b039cc92b:/# apt update -qqq ; apt install iptables -yqqq
root@835b039cc92b:/# iptables -t nat -A OUTPUT -o lo -p tcp --dport 5000 -j REDIRECT --to-
port 80
root@835b039cc92b:/# apt install telnet -yqqq
root@835b039cc92b:/# telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
root@835b039cc92b:/# exit
# from outside the container
➜ ~ telnet localhost 5000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
我在 Windows 的 Docker 桌面上遇到了类似的问题 运行 WordPress 和 Nginx。我需要在容器的 hosts
文件中添加一个条目,指示我的 local.example.com
域访问我的 ingress-nginx 控制器,这样 WordPress 的环回请求才能工作。尽管我的设置可能略有不同,但这可能对您有所帮助。
打开 /Windows/System32/drivers/etc/hosts
并复制 host.docker.internal
旁边的 IP 地址。通过执行以下操作之一,在启动时向容器的 hosts
文件添加一个条目,将域与主机 IP 联系起来。 IP
是您通过 host.docker.internal
Docker 参数:
--add-host="local.example.com:IP"
Docker撰写:
extra_hosts:
- "local.example.com:IP"
Kubernetes:
hostAliases:
- ip: "IP"
hostnames:
- "local.example.com"