2

我有一个 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

谢谢

4

2 回答 2

1

问题出在容器内部,打开的端口在80,而 docker 暴露32795在外部连接中

Wordpress 配置指向 port 32795,您可以80通过做暴露端口docker run -p 80:80并将 wordpress 配置更改为使用 port80

如果你不能使用端口: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.
于 2019-03-06T15:57:24.200 回答
1

我在 Docker Desktop for Windows 上使用 Nginx 运行 WordPress 时遇到了类似的问题。我需要在容器hosts文件中添加一个条目,引导我的local.example.com域访问我的 ingress-nginx 控制器,以便 WordPress 的环回请求能够工作。尽管我的设置可能略有不同,但这可能会对您有所帮助。

打开/Windows/System32/drivers/etc/hosts并复制 旁边的 IP 地址host.docker.internalhosts通过执行以下操作之一,在启动时将域与主机 IP 相关联的容器文件中添加一个条目。IP是您从机器的主机文件中复制的内容host.docker.internal

码头工人论点:

--add-host="local.example.com:IP"

码头工人组成:

extra_hosts:
  - "local.example.com:IP"

Kubernetes:

hostAliases:
- ip: "IP"
  hostnames:
  - "local.example.com"
于 2020-09-23T19:29:39.183 回答