nginx使用php出现502的问题
AI-摘要
ChatGLM GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
nginx使用php出现502的问题
ChengZC使用Nginx映射静态资源却出现502 http错误
查看nginx和php-fpm启动正常,查看日志发现php未连接就退出了
刚开始以为是端口未放行或者被占用,然而改完端口仍未解决,百度后解决方案如下:
Php-fpm启动后没有查询到9000端口的问题
今天通过 oneinstack 脚本安装php环境后发现了一个奇怪的现象,php-fpm进程在运行,但是看不到监听的端口号。原来是我漏掉了一个知识点。
知识点
nginx与php-fpm通信的两种方式: tcp socket(带端口方式访问)
和 unix socket(通过pid进程间相互访问)
。
unix socket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再nginx配置文件中填写php-fpm的pid文件位置,效率要比tcp socket高。
tcp socket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式。
可以参考nginx与php-fpm通信的两种方式
unix socket配置方法
我用oneinstack安装的php,打开/usr/local/php/etc/php-fpm.conf
中关于监听的部分配置如下:
1 | [www] |
所以,nginx我们应该这么配置:
1 | location ~ \.php(.*)$ { |
这种方式会遇到 access denied 的问题,参考本博客另外一篇文章。
tcp socket配置方法
以前自己安装php都用的端口号的写法,打开/usr/local/php/etc/php-fpm.conf中关于监听的部分配置如下:
1 | [www] |
所以,nginx我们应该这么配置:
1 | location ~ \.php(.*)$ { |
小结
以前只是在mysql里看到过unix socket的用法,在php里还是头一回,涨知识了。
记录:
- 注意安装完php后,php-fpm的调用方式时tcp_socket还是unix_socket,通过php-fpm.conf配置判断
- 修改apache默认端口:不仅要修改httpd.conf中的端口,还要修改xampp里的test端口
- xampp: lsof -i:3306
- 博客: lsof -i:3307
Comment
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果