博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP-FPM,Nginx,FastCGI 之间的关系
阅读量:5930 次
发布时间:2019-06-19

本文共 1743 字,大约阅读时间需要 5 分钟。

本文介绍 PHP-FPM,Nginx,FastCGI 三者之间的关系,以及 Nginx 反向代理和负载均衡的配置。

PHP-FPM,Nginx,FastCGI 之间的关系

FastCGI 是一个协议,它是应用程序和 WEB 服务器连接的桥梁。Nginx 并不能直接与 PHP-FPM 通信,而是将请求通过 FastCGI 交给 PHP-FPM 处理。

location ~ \.php$ {    try_files $uri /index.php =404;    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    fastcgi_buffers 16 16k;    fastcgi_buffer_size 32k;    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params;}

这里 fastcgi_pass 就是把所有 php 请求转发给 php-fpm 进行处理。通过 netstat 命令可以看到,127.0.0.1:9000 这个端口上运行的进程就是 php-fpm.

clipboard.png

Nginx 反向代理

Nginx 反向代理最重要的指令是 proxy_pass,如:

location ^~ /seckill_query/ {    proxy_pass http://ris.xxmail.gdrive:8090/;    proxy_set_header Host ris.xxmail.gdrive;} location ^~ /push_message/ {    proxy_pass http://channel.xxmail.gdrive:8090/;    proxy_set_header Host channel.xxmail.gdrive;} location ^~ /data/ {    proxy_pass http://ds.xxmail.gdrive:8087/;    proxy_set_header Host ds.xxmail.gdrive;}

通过 location 匹配 url 路径,将其转发到另外一个服务器处理。

通过负载均衡 upstream 也可以实现反向代理。

Nginx 负载均衡

介绍一下 upstream 模块:

负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机,再使用upstream模块实现与这台主机的交互。

负载均衡配置:

upstream php-upstream {    ip_hash;     server 192.168.0.1;    server 192.168.0.2;} location / {    root   html;    index  index.html index.htm;    proxy_pass http://php-upstream;}

该例定义了一个 php-upstream 的负载均衡配置,通过 proxy_pass 反向代理指令应用这个配置。这里用的 ip_hash 算法,负载均衡的算法有多种,就不一一列举了。

负载均衡也可以用在 fastcgi_pass 上。

如:

fastcgi_pass http://php-upstream

如果使用负载均衡,可能存在一个 session 失效的问题,你的每次请求可能分配到不同的服务器,一个解决方法是把 Memcached 或 Redis 作为 session 存储的方式,而且还可以提高性能。

一些问题

反向代理和负载均衡是什么关系

反向代理和负载均衡这两个词经常出现在一起,但他们实际上是不同的概念,负载均衡它更多的是强调的是一种算法或策略,将请求分布到不同的机器上,因此实际上也起到了反向代理的作用。

proxy_pass 和 fastcgi_pass 的区别

一个是反向代理模块,一个是转发给 factcgi 后端处理。

clipboard.png

(原文地址:)

转载地址:http://wputx.baihongyu.com/

你可能感兴趣的文章
云桌面的未来(二)
查看>>
CBAC ftp测试
查看>>
Microsoft MVP礼包开箱庆祝
查看>>
Windows Server 2008 定义IE浏览器主页和搜索提供程序
查看>>
你真的该让自己每天安静1小时
查看>>
pdf打开错误之读取本文档时出现问题(14)
查看>>
远程redhat linux oracle11g安装
查看>>
nginx中writev函数的使用
查看>>
Linux下源码安装Apache+SVN详解
查看>>
Json与Java间传参常用的几种方式
查看>>
Skype for Business Server 2015-05-监控和存档服务器-配置
查看>>
全闪存阵列为大数据优化
查看>>
Python NLP 入门教程
查看>>
linux-shell面试题 之二
查看>>
中关村创新云 后台硬
查看>>
恢复已禁用的邮箱后,用户访问还是提示已禁用
查看>>
《Java从小白到大牛》之第10章 面向对象基础(上)
查看>>
七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
查看>>
利用电影直播赚钱的方法(几乎零成本、很多人不知道)
查看>>
QT5.x应用在Mac OS X和Windows平台的发布过程
查看>>