此服务器上未启用HTTP环回连接-docker上的wordpress

时间:2019-03-06 15:27:44

标签: wordpress docker kitematic

我有一个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在网站内部创建了一个脚本,并检查了环回连接是否存在...

有解决方案吗?我有带kitematic的docker unwindows

谢谢

2 个答案:

答案 0 :(得分:0)

问题在容器内部,打开的端口为80,而docker为外部连接公开了32795

Wordpress配置指向端口32795,您可以通过执行80来暴露端口docker run -p 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.

答案 1 :(得分:0)

我在Windows的Docker桌面上使用Nginx运行WordPress时遇到类似的问题。我需要将一个条目添加到容器的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"