Nginx(十九)nginx配置php

4 篇文章 4 订阅

一   了解的基础知识

1) nginx'本身不能'处理PHP,它只是个'web服务器-->只能处理静态请求',当接收到请求后,如果是php请求,则'发给php解释器处理',并把结果返回给'web服务器',最后'再给'客户端

备注: nginx'默认并不支持'php等动态语言,nginx是服务器'主要用来'处理HTTP请求,其本身'并不支持'解析运行PHP代码的能力,需要'配置php-fpm'来运行php代码

2) nginx一般是把'请求发fastcgi管理进程'处理,fascgi管理进程'选择cgi子进程'处理结果并'返回'被nginx
​
备注: 原生的Nginx并'不支持动态语句'的解析,它通过'改良过的cgi方式'来实现对后端'动态脚本语言'的支持,像'fastcgi、scgi、uwsgi'或'直接代理到后端'的动态解析服务器

FastCGI模块(FastCGI)

二   nginx中配置php运行环境

①  apache的mod_phpnginx的php-fpm区别

+++++++++'apache的mod_php模块'+++++++++

1)apache的'mod_php'模块内置于apache中,算是apache派生的子进程

2)一旦配置了该模块,不管是静态资源还是动态资源都会使用'mod_php'模块,'开销大'

+++++++++'nginx的fastcgi模式'+++++++++

说明: fastcgi'不是'nginx派生的'子进程'

好处: fastcgi和nginx服务器可以'完全独立'-->'解耦',构成'分布式'

②  对于nginx配置文件中的fastcgi_param相关参数的理解

fastcgi_parms和fastcgi.conf的'区别'和'联系'

​+++++++++++++在php可'打印'出上面的'服务环境变量'​+++++++++++++

echo $_SERVER['REMOTE_ADDR']

③  php的cgi.fix_pathinfo解析

将cgi.fix_pathinfo=1这一行去掉注释将1改为0的用意

高版本的php fpm 设置项 cgi.fix_pathinfo=1 漏洞不再出现

fastcgi_split_path_info含义

Nginx(PHP/fastcgi)的PATH_INFO配

fastcgi_param PATH_INFO $path_info;                             可'自定义'变量

参考博客

③  php在nginx中的配置方式

使用'FastCGI方式'-->'PHP'在'Nginx中'运行模式(Nginx+ PHP-FPM)

补充: nginx可以和'任何第三方提供解析的处理器'实现连接从而'实现对PHP的解析'
说明: 从前面的'php-fpm.conf'的配置文件中我们知道'只能解析'以'.php、.php5、.php7'结尾的文件

++++++++'nginx对以.php结尾url请求的处理'++++++++

location ~ \.php$ {
        # 最好指定root指令
        try_files $uri =404; '非必要'
        fastcgi_split_path_info ^(.+.php)(/.+)$;' 非必要' --> '#正则解析路径'
        ## NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        '方式1': With php5-cgi alone:-->'本地'
        #fastcgi_pass 127.0.0.1:9000;
        '方式2': With php5-fpm:
        #fastcgi_pass unix:/var/run/php5-fpm.sock;-->'本地'
        '方式3': 通过'upstream模块' --> '远程'
        fastcgi_pass http://php
        include fastcgi_params;    --> '先参数初始化'
        fastcgi_index index.php; '首页'
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; '再修改默认参数'    
}

​+++++++++++++++document的'解读'​+++++++++++++++

④  案例讲解

++++++++++++++'涉及权限问题'++++++++++++++

说明: 由于nginx启动的用户身份是'nginx',而'php-fpm'启动的用户身份是'apache'

最佳实践: 最好二者都'统一指定'为同一用户,推荐指定为'nginx'

说明: php的资源目录'不是必须'放置到'nginx的资源目录'下,任何'可读取的位置'即可

+++++++++'重启服务'+++++++++

systemctl restart nginx

+++++++++'测试效果'+++++++++

备注: 'nginx日志查看'

⑤  开启php-fpmstatus页面

+++++++++'重启或者重载php-fpm和nginx'+++++++++

systemctl reload nginx

systemctl reload php74-php-fpm.service

http://nginx.wzj.com/php-status?full

php-fpm 状态页面详解

三   PHP页面不解析直接下载

+++++++++++++++'客户端.php结尾文件逻辑'+++++++++++++++

1)nginx配置php的话-->以'php'结尾的请求,nginx'直接转发给'fastcgi进行处理,nginx只需要接收'fastcgi'处理后的内容即可

2)'没有配'置的话-->nginx首先会在'/etc/nginx/mime.types'查询'是否有'该类型-->(默认没有),然后利用nginx自身的' default_type   application/octet-stream;'告诉'客户端'是一个二进制流,客户端受到之后'会直接下载'

'没有配置'的现象:nginx无法解析'PHP、perl、python'程序,一开启网页就'直接下载'程序

++++++++'排查思路'++++++++

(1)先检查PHP环境

(2)再检查php-fpm

四   反向代理负载均衡的关系

①  关系

+++++++++++'反向代理'和'负载均衡'是什么关系+++++++++++
 
1)反向代理和负载均衡这两个词'经常出现在一起'但他们实际上是'不同的概念'

2)'负载均衡'它更多的是'强调'的是一种'算法或策略',将请求'分布到不同的机器上',因此实际上也'起到了反向代理'的作用

②  fastcgi与反向代理

+++++++++++'负载均衡'也可以用在 'fastcgi_pass' 上+++++++++++

fastcgi_pass http://php-upstream

如果使用负载均衡,可能存在一个 'session 失效'的问题你的每次请求可能分配到不同的服务器

解决方法: 是把 Memcached 或 Redis '作为 session 存储'的方式,而且还可以'提高性能'-->分布式

 ③  proxy_pass 和 fastcgi_pass 的区别 

clipboard.png

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Nginx配置 PHP,您需要进行以下步骤: 1. 安装 PHP-FPM(PHP FastCGI Process Manager):PHP-FPM 是 PHP 的 FastCGI 进程管理器,它与 Nginx 协同工作以处理 PHP 请求。您可以使用包管理器(如 apt、yum)进行安装,或者从 PHP 官方网站下载并编译安装。 2. 配置 PHP-FPM:编辑 PHP-FPM 的配置文件(通常位于 `/etc/php-fpm.conf` 或 `/etc/php-fpm.d/www.conf`),根据您的需要进行配置。确保启用了 TCP/IP 套接字或 UNIX 套接字监听模式,并记下监听地址和端口(默认为 127.0.0.1:9000)。 3. 配置 Nginx 以使用 PHP-FPM:在 Nginx配置文件中(通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/conf.d/default.conf`),找到处理 PHP 请求的位置块,并确保以下配置项正确设置: ``` location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 4. 重新加载 Nginx:保存 Nginx 配置文件后,使用以下命令重新加载配置文件: ``` sudo service nginx reload ``` 5. 测试 PHP 配置:创建一个简单的 PHP 文件(例如 `info.php`),其中包含以下内容: ```php <?php phpinfo(); ``` 将该文件放置在 Nginx 的文档根目录中(通常为 `/var/www/html`),然后通过访问 `http://your-domain/info.php` 来测试 PHP 配置。您应该能够看到 PHP 信息页面,表示 PHP 已正确配置并与 Nginx 正常工作。 请注意,上述步骤仅为基本的 PHP 配置,实际配置可能会因您的环境和需求而有所不同。确保您在进行配置更改之前备份原始配置文件,并根据您的具体情况进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值