fastcgi

CentOS7 Docker配合宿主机nginx运行多版本php环境

落花浮王杯 提交于 2020-03-15 23:49:23
PHP Docker 镜像 主机一般都是直接yum配置好的Nginx+PHP-FPM+Mysql,由于业务需要,原本环境里面的php7,不能兼容遗留的php5.x的老程序了,但是又想在同一主机上跑起来,问题来了: 现有直接安装的Nginx、php7-fpm、mysql A 程序php 5.6编写 需要fpm B 程序php 5.3 ,而且是用apache做的url rewrite A、B程序还要链接本机mysql数据库 所以我的想法,看图: Dokcer 安装 前置任务配置启动docker,请参考以下内容 CentOS7 下 Docker 升级到最新版本 国内拉取镜像可能会慢,建议添加 CentOS 7 配置Docker镜像的国内源 选择php 在docker hub上 PHP官方镜像 ,提供的docker image系列有 php:<version>-cli 命令行版本,单独的php php:<version>-apache 和apache打包的php php:<version>-fpm 提供PHP-FPM服务的php 因为本机已经安装了nginx, 所以只需要用 php:5.3-apache 和 php:5.6-fpm 就可以了。 链接Nginx 配置 php5.3+Apache 启动 php5.3-apache docker run --name php53apache -v

PHP Opcache的工作原理

独自空忆成欢 提交于 2020-03-14 16:09:53
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。 而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显。 1. 概述 在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。 1.1 PHP-FPM + Nginx 的工作机制 请求从Web浏览器到Nginx,再到PHP处理完成,一共要经历如下五个步骤: 第一步:启动服务 启动PHP-FPM。PHP-FPM 支持两种通信模式:TCP socket和Unix socket; PHP-FPM 会启动两种类型的进程:Master 进程 和 Worker 进程,前者负责监控端口、分配任务、管理Worker进程;后者就是PHP的cgi程序,负责解释编译执行PHP脚本。 启动Nginx。首先会载入 ngx_http_fastcgi_module 模块,初始化FastCGI执行环境,实现FastCGI协议请求代理 这里要注意:fastcgi的worker进程(cgi进程),是由PHP-FPM来管理,不是Nginx。Nginx只是代理 第二步:Request => Nginx Nginx 接收请求,并基于location配置,选择一个合适handler 这里就是代理PHP的 handler 第三步

nginx使用geoip判断国家

早过忘川 提交于 2020-03-09 17:27:07
Nginx 可配合 GeoIP 模块定位IP所在物理位置并做相应处理,支持多个条件匹配: 1 2 3 4 5 6 7 8 9 10 # http://www.haiyun.me $geoip_country_code #国家代码2位,如CN $geoip_country_code3 #国家代码3位,如CHN $geoip_country_name #国家完整名称,如China $geoip_region #所在地区 $geoip_city #所在城市,如BeiJing $geoip_postal_code #邮政编码 $geoip_city_continent_code #所在洲,如AS $geoip_latitude #纬度 $geoip_longitude #经度 编译安装 Nginx 并添加 GeoIP 模块: 1 2 3 4 5 6 7 8 yum install geoip-devel #安装GeoIP解析库 wget http: //nginx .org /download/nginx-1 .0.15. tar .gz tar zxvf nginx-1.0.15. tar .gz cd nginx-1.0.15 . /configure --user=www --group=www --prefix= /usr/local/nginx --with-http_stub

upstream sent too big header while reading...

北慕城南 提交于 2020-03-07 20:07:54
nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; fastcgi_buffers 32 32k; ### ---- include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /host/web/$fastcgi_script_name; } 2. 如果使用了反向代理、负载均衡,则: location @to_other { #增加下面3行 proxy_buffer_size 128k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; #### ---------- add_header X-Static transfer; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;

用nginx部署django站点时的错误

江枫思渺然 提交于 2020-03-07 18:31:18
用nginx部署django站点时的错误 站点用flup做代理,nginx配置部分如下: location / { proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; include fastcgi_params; fastcgi_read_timeout 60; fastcgi_pass 127.0.0.1:6000; fastcgi_param PATH_INFO $fastcgi_script_name; } 对于django来说,必须用到PATH_INFO,所以加了 fastcgi_param PATH_INFO $fastcgi_script_name; 。然后问题也来了,所有url都无法找到。通过django的日志发现,所有url都重复了,比如/api变成了/api/api/。 ## 原来问题在于 fastcgi_params的内容 nginx的/etc/nginx/fastcgi_params文件内容是这样的: fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type;

在哪里可以使用fastcgi和django找到Nginx的错误日志

本秂侑毒 提交于 2020-03-07 17:40:57
我在使用fastcgi + nginx的django。 我想知道这种情况下的日志(错误)存储在哪里 #1楼 错误存储在nginx日志文件中。 您可以在Nginx配置文件的根目录中指定它。 error_log /var/log/nginx/nginx_error.log warn; 在具有 Homebrew的 Mac Os X 上,默认情况下在以下位置找到日志文件: /usr/local/var/log/nginx #2楼 我正在寻找其他解决方案。 默认情况下,在我的系统(x86 Arch)上进行任何配置之前,都会在以下位置找到错误日志: /var/log/nginx/error.log #3楼 我的ngninx日志位于: /usr/local/var/log/nginx/* 您还可以检查 nginx.conf 来查看是否有任何指令转储到自定义日志。 运行 nginx -t 找到您的 nginx.conf 。 # in ngingx.conf error_log /usr/local/var/log/nginx/error.log; error_log /usr/local/var/log/nginx/error.log notice; error_log /usr/local/var/log/nginx/error.log info; Nginx通常在 /usr/local 或

php-fpm搭建及加固

狂风中的少年 提交于 2020-03-07 17:16:30
php-fpm安装 nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。 nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。 那什么又是cgi呢? CGI(Common Gateway Interface)。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 简单的说,就是:cgi就是专门用来和web 服务器打交道的。web服务器收到用户请求,就会把请求提交给cgi程序(php的fastcgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句返回给web服服务器,再返回给客户端,这就是普通cgi的工作原理。 安装 yum安装 yum install php php-mysql php-fpm 安装成功。 php-fpm配置文件路径:/etc/php-fpm.d/www.conf php配置文件路径:/etc/php.ini 说明: php-mysql,这个是后续链接mysql需要的 修改php配置 php

Bypass FastCGI Cache When Authorization Header

烈酒焚心 提交于 2020-03-05 01:34:06
问题 I have implemented FastCGI caching in Nginx for a Laravel API app but I realized I don't want endpoints that return user-related data to be cached. I'm using JWT Auth and I passing the token as Authorization: Bearer ... in the headers in order to authenticate user requests. I couldn't figure out a way to disable FastCGI cache if this header is present in the request. This is what I have in my Nginx: fastcgi_cache_path /etc/nginx-cache levels=1:2 keys_zone=phpcache:100m inactive=60m; fastcgi

Nginx 防御CC攻击的两种方法

南楼画角 提交于 2020-03-02 04:55:52
Nginx 防御CC攻击的两种方法 centos 软件安全防御 2015年5月25日 235 0 0 CC攻击可以归为DDoS攻击的一种。他们之间都原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击。CC攻击又可分为代理CC攻击,和肉鸡CC攻击。代理CC攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar)。而肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御。因为肉鸡可以模拟正常用户访问网站的请求。伪造成合法数据包。防御CC攻击可以通过多种方法,禁止网站代理访问,尽量将网站做成静态页面,限制连接数量等。 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用。 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好。 Nginx虽然可以比Apache处理更大的连接数,但是HTTP GET FLOOD针对的不仅仅是WEB服务器,还有数据库服务器。大量HTTP请求产生了大量的数据库查询,可以在几秒之内使数据库停止响应,系统负载升高,最终导致服务器当机。 本文主要介绍CentOS+Nginx下如何快速有效得防御CC攻击

Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····

两盒软妹~` 提交于 2020-03-01 19:20:21
Ngninx默认虚拟主机 1.vim /usr/local/nginx/conf/nginx.conf //增加 2.include vhost/*.conf 3.mkdir /usr/local/nginx/conf/vhost 4.cd !$; vim default.conf //加入如下内容 server { listen 80 default_server; // 有这个标记的就是默认虚拟主机 server_name aaa.com; index index.html index.htm index.php; root /data/wwwroot/default; } 5.mkdir -p /data/wwwroot/default/ 6.echo “This is a default site.”>/data/wwwroot/default/index.html 7./usr/local/nginx/sbin/nginx -t 8./usr/local/nginx/sbin/nginx -s reload 9.curl localhost 10.curl -x127.0.0.1:80 123.com 操作演示: [root@xuexi-001 ~]# ls /usr/local/nginx/conf/ fastcgi.conf mime.types scgi