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 server

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

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

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

可以用dig来查看这个qq.com有几个ip。就是域名解析。如果dig 没有可以装一下yum install -y bind-utils

[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]部分增加

[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


重启

[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的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。

扩展学习

转载于:https://my.oschina.net/u/3852961/blog/1842499

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值