博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx+Squid+php-fpm整合与配置
阅读量:5743 次
发布时间:2019-06-18

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

  hot3.png

来自Kearney,转载请注明出处。

很久没自己写技术类的东西了,跟大家分享一下今天整合Nginx、Squid和php-fpm的心得。

整体架构大致如下:

Client -> Squid(反向代理) -> Nginx(反向代理) -> php-fpm(Server)

首现呢,版本如下:

Linux: x86_64 CentOS release 6.2(Final)

Squid cache: 3.1.10

Nginx: Tengine/1.4.0(nginx/1.2.3)

php-fpm: PHP 5.4.6(fpm-fcgi)

Zend Engine: v2.4.0

在整体架构上,传统有两种模式,一种呢,是

Client -> Squid(反向代理) -> Nginx(反向代理) -> php-fpm(Server)

另一种呢,是

Client -> Nginx(反向代理) -> Squid(反向代理) ->php-fpm(Server)

 

两种方法各有利弊,具体差别可以在网上查询。简单打个比方,静态图片站适合用第一种,BBS网站适合用第二种。

还有Hybrid,即混合模式,大概的样子是 

Client -> Nginx(反向代理) -> Squid(反向代理) -> Nginx(中间层) ->Server

这里只介绍Squid在最前端的方式的配置方法,请谅解,什么其他问题留言商讨。

PHP-FPM

安装好php,找到php自带的php-fpm,咱们先让php-fpm服务跑起来,让最终工作的服务先运行起来。

find / -name php-fpm

比如结果为:/home/work/local/php-5.4.6/sbin/php-fpm

然后进入该 php-5.4.6 文件夹里,进入/home/work/local/php-5.4.6/etc/php-fpm.conf

搜索listen,改为listen = 127.0.0.1:9000 #127.0.0.1为该服务的ip地址,9000为服务端口,保存。

然后运行/home/work/local/php-5.4.6/sbin/php-fpm,php-fpm服务就运行起来了。

Squid配置如下:

既然squid要做反向代理的入口,即作为Nginx的上游,那么在squid.conf中就要加上一句话:

#其中80是Squid监听端口,Http默认80端口,为了让Squid服务对用户透明,就指定为80端口http_port 80 vhost vport
#10.207.16.257为Nginx服务的IP地址,后面的8080是Nginx服务的端口cache_peer 10.207.16.251 parent 8080 0 no-digest no-query originserver

其他Squid配置则为默认,不需要太大改动,修改完后使用Squid -k parse进行conf配置文件检验,没有问题则运行 squid,(squid路径/squid)端口为上面指定的80端口,到此为止,squid配置完成。

然后运行squid,

squid -zsquid

新版3.x, 一定要先运行suqid -z,初始化缓存目录,具体如何设置缓存目录和大小,这里就不详细解说啦~

然后输入squid运行,如果之前没有-z,那么服务启动后是有问题的(当作不能用吧)。

Nginx配置如下:

进入Nginx的配置文件nginx.conf,找到如下位置:

server {

          listen       8080;

          server_name  localhost;

          index index.php index.html index.htm; 

          root /home/kaikai/html; 

          location / { 

              root   /home/kaikai/html;

              index index.php index.html index.htm;

          }  

加红位置为着重注意的地方,root为nginx默认读取的路径,index之类的为nginx默认解析的文件。

在Nginx获得*.php文件后,需要把该文件抛给php解释器去执行,当然这里的php解释器为php-fpm(一种fast cgi,相比spwan-cgi能好一些吧)。

那么,这时候就要配置Nginx遇到*.php该怎么办的部分了,如下:

location ~ \.php$ {

              root           /home/kaikai/html;

              fastcgi_pass   127.0.0.1:9000;

              fastcgi_index  index.php;               

              fastcgi_param  SCRIPT_FILENAME /home/kaikai/html$fastcgi_script_name; 

              #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

              include fastcgi_params;

              if ($request_uri ~ "^(.*)(\?.*)$") {

                  set $path_info $1;

              }

              fastcgi_param PATH_INFO $path_info;set $path_info $request_uri;

}

同样,红色位置为重要部分,其他地方可复制粘贴即可。其中,fastcgi_pass 为php-fpm服务运行的地址和端口,

fastcgi_index 为php-fpm默认解析的文件。

/home/kaikai/html为nginx下默认访问文件夹(即工程文件)。

这样呢,基本的整合就完成了。打开浏览器,输入http://localhost 就能直接访问Nginx了~(前面的Squid缓存对用户透明咯~用户发现不到哦)。

大概就这样啦~谢谢。

Tips:如果出现以下信息,

2012/11/09 11:39:53| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.

 WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'2012/11/09 11:40:08| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
在squid.conf里加上visible_hostname squid.server.commm  这句话就行了。

转载于:https://my.oschina.net/kear/blog/80505

你可能感兴趣的文章
怎么用sysLinux做U盘双PE+DOS??
查看>>
Spring Transactional
查看>>
shell脚本实例
查看>>
我的友情链接
查看>>
Windows Phone 7 隔离存储空间资源管理器
查看>>
Microsoft Excel 2000/2003修复工具
查看>>
apache安装报错undefined reference ssl
查看>>
关于爱情只有一句忠告
查看>>
CentOS 7下安装部署Oracle11g图文教程
查看>>
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>