2018-7-6笔记

12.17 Nginx负载均衡

# dig 可以反馈多个ip

·        vim /usr/local/nginx/conf/vhost/load.conf #写入如下内容

upstream qq_com #upstream来指定多个web server

{

    ip_hash;

    server61.135.157.156:80;

    server125.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;

    }

}

12.18SSL原理

1、SSL工作流程

·        浏览器发送一个https的请求给服务器;

·        服务器要有一套数字证书,可以自己制作,也可以向组织申请,区别是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥;

·        服务器会把公钥传输给客户端;

·        客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;

·        客户端把加密后的随机字符串传输给服务器;

·        服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容);

·        服务器把加密后的数据传输给客户端;

·        客户端收到数据后,再用自己的私钥也就是那个随机字符串解密

2、SSL工作流程图

12.19生成SSL密钥对

·        cd /usr/local/nginx/conf                                    #公钥和私钥的放置路径

·        openssl genrsa -des3 -out tmp.key2048          #key文件为私钥,生成rsa格式的私钥,2048表示私钥长度,生成密钥的时候必须要有密码

·        openssl rsa -in tmp.key -outaminglinux.key     #转换key,取消密码,将上一步生成的密钥文件更改名字,避免在浏览器访问时要输入密码

·        rm -f tmp.key

·        openssl req -new -key aminglinux.key -outaminglinux.csr #生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件

·        openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt #aminglinux.crt为公钥

12.20 Nginx配置SSL

·        vim /usr/local/nginx/conf/vhost/ssl.conf #编辑ssl配置文件,加入如下内容

server

{

    listen 443;

    server_name aming.com;

    index index.htmlindex.php;

    root/data/wwwroot/aming.com;

    ssl on;

    ssl_certificate aminglinux.crt; #指定公钥

   ssl_certificate_key aminglinux.key; #指定私钥

    ssl_protocols TLSv1TLSv1.1 TLSv1.2; #SSL协议版本

}

·        /usr/local/nginx/sbin/nginx -t &&-s reload                    #语法检查,若报错unknown directive “ssl” ,需要重新编译nginx,加上--with-http_ssl_module, 命令:/usr/local/nginx/sbin/nginx-V查看编译参数

·        mkdir /data/wwwroot/aming.com

·        echo “ssl testpage.”>/data/wwwroot/aming.com/index.html                      #编辑测试文件

·        编辑hosts,增加“127.0.0.1 aming.com”

·        curl https://aming.com/                                               #命令行访问测试,浏览器访问测试会提示不安全,因为是自己生成的证书,未被浏览器认证

12.21 php-fpm的pool

Nginx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口,也可以监听一个socket,等于把网站分开隔离互不影响,因为当一个网站资源耗尽后,进程就不提供服务了,然而会导致所有网站报错502,让他们进行隔离后可以让他们互相独立,互不影响。一个网站挂了,还有其他网站可以使用。

1.在php-fpm配置文件上再加入一个配置

·        [www1]
listen = /tmp/php-fcgi1.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           

·        

·        可以看到这个配置文件上有2个pool  ,这样设置就可以区分开了

·        /usr/local/php-fpm/sbin/php-fpm -t  //检查语法

·        /etc/init.d/php-fpm  restart //重启服务

·        ps aux|grep php-fpm   //查看进程,可以看到下图有个2个进程,分别是www和www1,

12.22php-fpm慢执行日志

通过php-fpm慢执行日志,我们可以非常清晰地了解到PHP脚本哪里执行时间长,它可以定位到具体的行。

1./usr/local/php-fpm/etc/php-fpm.conf

2.添加如下内容(在pool下)

    request_slowlog_timeout= 1 //即php脚本执行超过1秒则记录日志

    slowlog =/usr/local/php-fpm/var/log/www-slow.log        //定义慢执行日志的路径和名字

3./usr/local/php-fpm/sbin/php-fpm -t  //检查语法

/etc/init.d/php-fpm  restart //重启服务

4.写一个php脚本  \\脚本2秒执行

    <?php
echo "test slow log";
sleep(2);
echo "done"

?>

5.查看日志

cat www-slow.log 

[13-Jun-2018 20:19:49]  [pool www] pid 2811
script_filename =/data/nginx1/1.php           //
影响缓慢的脚本

[0x00007f87210dd1d8] sleep()/data/nginx1/1.php:3  //可以看到PHP脚本第三行是影响的关键

12.23open_basedir

隔离其他目录~

1./usr/local/php-fpm/etc/php-fpm.conf    

    添加如下内容

                php_admin_value[open_basedor]=/data/nginx1:/tmp/             //主要这里的路径要跟nginx.conf的目录相同否则会报错

2./etc/init.d/php-fpm restart  //重启服务

3.测试,

    curl -x127.0.0.1:80test.com/1.php

12.24php-fpm进程管理


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值