当前位置:首页 > 时尚 > nginx php环境搭建

nginx php环境搭建

2026-10-17 05:45:43 [休闲] 来源:力不从心网

Nginx 配 PHP,环境最省事的搭建办法是直接用发行版包管理器装。Ubuntu 上一条 apt install nginx php-fpm 就完事,环境CentOS 换 yum 也一样。搭建但很多人装完打开浏览器看到一片空白,环境或者下载了个 index.php 文件,搭建问题基本都出在 Nginx 不知道怎么把 PHP 请求转给 PHP-FPM。环境

Nginx 本身不处理 PHP。搭建它把 .php 结尾的环境请求通过 FastCGI 协议丢给 PHP-FPM 进程,FPM 处理完再把结果返回。搭建所以配置的环境核心就一句话:告诉 Nginx 哪些请求该转,转到哪里去。搭建

先确认 PHP-FPM 在跑

装完 PHP-FPM 后它通常会自动启动。环境用 systemctl status php-fpm 或 systemctl status php8.1-fpm 看一眼,搭建具体服务名取决于 PHP 版本。环境Ubuntu 下一般是 php8.x-fpm,CentOS 下可能就叫 php-fpm。

FPM 监听的方式有两种:Unix socket 和 TCP 端口。默认配置里 Ubuntu 走 socket,路径类似 /run/php/php8.1-fpm.sock;CentOS 走 TCP,监听 127.0.0.1:9000。这个信息必须和 Nginx 配置里写的一致,否则就是 502 Bad Gateway。

Nginx 的 server 块怎么写

假设站点目录在 /var/www/html,一个能跑 PHP 的最小配置大概长这样:

server {  listen 80; server_name example.com; root /var/www/html; index index.php index.html; location / {  try_files $uri $uri/ =404; } location ~ \.php$ {  include fastcgi_params; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

几个关键点。fastcgi_pass 的地址要和 FPM 实际监听的一致。如果你用的是 TCP,就写 fastcgi_pass 127.0.0.1:9000;。SCRIPT_FILENAME 这行必须加,不加的话 FPM 不知道要执行哪个文件,返回一个 “File not found”。include fastcgi_params 引入的是一堆标准 FastCGI 变量,发行版通常放在 /etc/nginx/fastcgi_params。

还有个容易踩的坑:location ~ \.php$ 这个正则匹配的是以 .php 结尾的 URI。如果请求的是 /js/app.php.js 这种,不会匹配到,没问题。但有些老教程写的是 location ~ .php$,少了个反斜杠,那 .php 里的点就变成了任意字符,/uploads/shell.phps 之类的也可能被拿去执行。别抄错。

安全上的一个细节

上面那个配置有个隐患:如果用户上传了一个伪装成图片的 PHP 文件到 /uploads/,而 location ~ \.php$ 没有做路径限制,这个文件就可能被当成 PHP 执行。加一段:

location ~* /uploads/.*\.php$ {  deny all; }

把上传目录里的 PHP 请求直接拒掉。这不是 Nginx 的 bug,是配置者需要主动考虑的事。

改完记得 reload

Nginx 改配置用 nginx -t 先测语法,通过了再 systemctl reload nginx。直接 restart 会断掉正在处理的连接,reload 更平滑。PHP-FPM 改配置同理,systemctl reload php8.1-fpm。

测试的时候别只放一个 <?php echo "ok"; ?>,再写一个 phpinfo() 页面看看 FPM 的配置有没有生效,比如 upload_max_filesize、memory_limit 这些。改完 FPM 的 php.ini 必须 reload FPM 才生效,改 Nginx 的 fastcgi_param 则 reload Nginx。

整套东西跑起来之后其实很稳。出问题的地方翻来覆去就那几个:socket 路径不对、SCRIPT_FILENAME 没设、文件权限不够(Nginx 的 www-data 用户读不了 PHP 文件)、SELinux 拦了(CentOS 上常见,setsebool -P httpd_can_network_connect on 能解决一部分)。挨个排查就行。

(责任编辑:时尚)

推荐文章
  • asp企业有哪些

    asp企业有哪些 十年前,ASPActive Server Pages)还是中小企业的“标配”,如今还活着的ASP企业,基本都挤在三个细分赛道里:老牌系统维护、特定行业定制、以及外包“接盘侠”。 先说最典型的——那些给 ...[详细]
  • 派出所网安检查

    派出所网安检查 下午三点,辖区那家连锁酒店的前台小姑娘正对着电脑发呆。我掏出警官证,她明显愣了一下——“网安检查,你们机房和Wi-Fi审计设备在哪儿?”她指了指走廊尽头,手有点抖。 这种反应我见多了。很多人以为网安检 ...[详细]
  • 注意网络隐私安全资料

    注意网络隐私安全资料 上周,我一位朋友收到一条短信,自称是某银行客服,说她的账户存在异常,需要点击链接验证身份。她差点就点了——链接域名是“bank-secure.net”,看起来还挺像那么回事。好在最后她多看了一眼,发现 ...[详细]
  • 拼多多黑标申请条件

    拼多多黑标申请条件 拼多多黑标官方叫“品牌黑标”)的申请门槛,说白了就一句话:**你不是品牌,就别想碰。** 但“品牌”两个字在拼多多体系里,比你想的复杂得多。 我见过太多做代工的工厂老板,手握大牌同源生产线,兴冲冲去申 ...[详细]
  • 怎么上传

    怎么上传 上传按钮就在那里,蓝底白字,像一块沉默的磁铁。你点了它,弹出文件管理器,找到那张昨晚拍的夕阳照片,双击。进度条开始蠕动,像一条懒洋洋的毛毛虫。然后呢?然后它就卡住了。 我在一家小设计公司干了六年,每天 ...[详细]
  • 小贷

    小贷 小贷公司楼下的奶茶店,下午三点准时排起长队。穿衬衫的年轻人扫码点单,手机屏幕亮着借款APP的还款提醒。隔壁中介老张叼着烟,跟客户讲“过桥资金”的利息算法,唾沫星子溅到玻璃门上。 我认识一个做小贷的业务 ...[详细]
  • 网页banner是什么

    网页banner是什么 网页banner,说白了就是网页顶部那张大图。你打开任何一个新闻门户、电商网站,第一眼看到的那块会滚动、会跳转、有时还带个小动画的矩形区域,就是它。 但要是真这么简单,我也不用专门写篇文章了。bann ...[详细]
  • 从零开始小说笔趣阁无弹窗

    从零开始小说笔趣阁无弹窗 笔趣阁的服务器在凌晨三点十七分又崩了一次。我盯着浏览器里那个旋转的菊花图标,手指在F5键上悬了十秒,最后还是按了下去。页面刷新出来的瞬间,新章节的标题赫然在目——第438章,主角终于要突破金丹期了。 ...[详细]
  • 红队和蓝队从相距20km的两地相向而行

    红队和蓝队从相距20km的两地相向而行 红队和蓝队从相距20km的两地相向而行。这不是演习,是每个季度都要来一次的实兵对抗。我站在指挥部屏幕前,看着两个光点以每小时5公里的速度缓慢靠近——徒步,全副武装,背负30公斤装备。20公里,按这个速 ...[详细]
  • ajax前后台传json实例

    ajax前后台传json实例 ajax传json,说白了就是让网页不刷新就能跟服务器交换数据。前端塞一个对象过去,后端接住,再扔回来一个对象,前端拿到手直接渲染。看起来简单,但真写起来,坑都在细节里。 先看最简单的GET请求。你有 ...[详细]
热点阅读