Nginx负载均衡, ssl原理,php-fpm,open_basedir

Nginx负载均衡

  • vim /usr/local/nginx/conf/vhost/load.conf // 写入以下内容
upstream qq_com
{
    ip_hash;
    server 61.135.157.156:80;
    server 125.39.240.113:80;
}
server
{
    listen 80;
    server_name www.qq.com;
    location /
    {
        proxy_pass      http://qq_com;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

upstream来指定多个web serverphp

ip_hash,保证客户端保持访问一个ip。也就是一个服务器。html

proxy_pass 后面不能跟ip了,只能跟upstream后面的名字linux

  • 先用qq.com做为实验对象。

能够用dig来查看这个qq.com有几个ip。就是域名解析。若是dig 没有能够装一下yum install -y bind-utilsnginx

[root@aminglinux-01 ~]# dig qq.com

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7 <<>> qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63880
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;qq.com.				IN	A

;; ANSWER SECTION:
qq.com.			109	IN	A	125.39.240.113
qq.com.			109	IN	A	61.135.157.156

;; Query time: 13 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: 二 10月 24 17:28:56 CST 2017
;; MSG SIZE  rcvd: 67

[root@aminglinux-01 ~]#
  • nginx不支持代理 https

SSL工做流程

  • 浏览器发送一个https的请求给服务器;
  • 服务器要有一套数字证书,能够本身制做(后面的操做就是阿铭本身制做的证书),也能够向组织申请,区别就是本身颁发的证书须要客户端验证经过,才能够继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥;

php-fpm的pool

  • 由于防止一个网站出问题致使pool出问题全部网站都不能用了。因此有必要每一个站点使用单独的pool。
  • 设置多个pool

vim vim /usr/local/php-fpm/etc/php-fpm.conf//在[global]部分增长web

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024


[aming.com]
listen = /tmp/aming.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

检查算法

[root@aminglinux-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[25-Oct-2017 19:54:35] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

重启vim

[root@aminglinux-01 etc]#  /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@aminglinux-01 etc]#

ps aux |grep php-fpm后端

[root@aminglinux-01 etc]# ps aux |grep php-fpm
root       2566  0.1  0.4 227200  4992 ?        Ss   19:55   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    2567  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2568  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2569  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2570  0.0  0.4 227140  4716 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2571  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2572  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2573  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2574  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2575  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2576  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2577  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2578  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2579  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2580  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2581  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2582  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2583  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2584  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2585  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2586  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool www
php-fpm    2587  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2588  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2589  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2590  0.0  0.4 227140  4720 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2591  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2592  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2593  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2594  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2595  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2596  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2597  0.0  0.4 227140  4724 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2598  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2599  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2600  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2601  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2602  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2603  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2604  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2605  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
php-fpm    2606  0.0  0.4 227140  4728 ?        S    19:55   0:00 php-fpm: pool aming.com
root       2613  0.0  0.0 112668   972 pts/0    R+   19:57   0:00 grep --color=auto php-fpm

这样把pool和网站绑在一块儿。浏览器

[root@aminglinux-01 etc]# cd /usr/local/nginx/conf/vhost/
[root@aminglinux-01 vhost]# ls
aaa.com.conf  load.conf  ssl.conf  test.com.conf
[root@aminglinux-01 vhost]# vi test.com.conf
location ~ \.php$
   {
      include fastcgi_params;
      fastcgi_pass unix:/tmp/aming.sock;      //改这里
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;     

    }

php-fpm慢执行日志

  • 编辑vim /usr/local/php-fpm/etc/php-fpm.conf //加入以下内容
request_slowlog_timeout = 1   //超过一秒钟就要记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log   //日志路径

/usr/local/php-fpm/sbin/php-fpm -t服务器

/etc/init.d/php-fpm reload

  • 模拟执行慢。
  • cd /data/wwwroot/test.com/
  • 建立一个sleep.php

写入以下内容

<?php 
echo “test slow log”;
sleep(2);
echo “done”;
?>
  • curl -x192.168.245.130:80 test.com/sleep.php
  • 查看日志cat /usr/local/php-fpm/var/log/www-slow.log

open_basedir

  • vim /usr/local/php-fpm/etc/php-fpm.d/aming.conf//加入以下内容
php_admin_value[open_basedir]=/data/wwwroot/aming.com:/tmp/

建立测试php脚本,进行测试 再次更改aming.conf,修改路径,再次测试 配置错误日志 再次测试 查看错误日志

php-fpm进程管理

  • pm = dynamic //动态进程管理,也能够是static
  • pm.max_children = 50 //最大子进程数,ps aux能够查看
  • pm.start_servers = 20 //启动服务时会启动的进程数
  • pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,若是达到这个数值时,php-fpm服务会自动派生新的子进程。
  • pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,若是高于这个数值就开始清理空闲的子进程。
  • pm.max_requests = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多能够处理这么多请求,当达到这个数值时,它会自动退出。

扩展学习

相关文章
相关标签/搜索