MAC系统的Docker中访问宿主机php端口
文章目录
今天莫名奇妙的发现电脑上的openresty启动不起来了,提示invalid PID number "" in "/opt/homebrew/var/run/openresty.pid"
,卸载重装依然同样的问题。
临时通过docker装了一个openresty访问宿主机IP时候问了ChatGPT,给的(错误)答复是:
要让 Docker 中的 Nginx 调用宿主机上的 PHP-FPM(运行在 9000 端口),你需要在 Nginx 的配置中使用 fastcgi_pass
指向宿主机的 IP 地址或特殊的 Docker 网关 IP。以下是步骤:
1. 获取宿主机的 IP 地址
在 Docker 容器中,宿主机的 IP 通常是 host.docker.internal
(适用于 Docker Desktop),或者是 Docker 网关 IP 172.17.0.1
(取决于你的 Docker 网络配置)。
如果你使用的是 Linux 宿主机,host.docker.internal
可能不可用,建议使用 Docker 网关 IP。
2. 配置 Nginx
在你的 Docker 容器中,Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
。找到相应的 server
块并添加或修改如下内容:
|
|
3. 验证配置
在 Nginx 容器中运行以下命令以验证 Nginx 配置文件是否正确:
|
|
如果配置没有问题,重新加载 Nginx:
|
|
注意事项
- 端口映射:确保你的 PHP-FPM 在宿主机上的 9000 端口开放,并且 Docker 容器能访问到这个端口。
- 防火墙:如果宿主机上有防火墙,确保允许 Docker 容器访问 9000 端口。
- 网络配置:如果你使用自定义 Docker 网络,可能需要根据网络配置来调整宿主机的 IP 地址。
这应该可以让 Docker 中的 Nginx 调用宿主机上的 PHP-FPM 处理 PHP 请求。
最终解决方案
|
|
|
|
参考资料
文章作者 P.X.C
上次更新 2024-10-15
许可协议 不允许任何形式转载。