12.17 Nginx负载均衡
12.18ssl原理
12.19 生产ssl密钥对
12.20Nginx配置ssl
12.21php-fpm的pool
12.22 php-fpm慢执行日志
12.23 open_basedir
12.24 php-fpm进程管理
12.17 Nginx负载均衡
借助一个工具upstream
1,先安装一个dig命令
yum install -y bind-utils
然后dig baidu.com,获取到对应的baidu.com的ip
2,增加upstream
upstream baidu //名称随意
{
ip_hash;
server 123.125.115.110:80;
server 220.181.57.216:80;
}
server
{
listen 80;
server_name www.baidu.com;
location /
{
proxy_pass http://baidu; //和上面要求一致
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
正常访问的适合访问的是默认网页
[root@localhost vhost]# curl -x127.0.0.1:80 www.baidu.com
This is the default site
Reload之后则是源码了
注意只能代理http,不能代理https,最新版本才能支持
12.18ssl原理
访问一些网站有些重要的数据,但是有可能被其他人抓到,如果是用的https,则是加密的
12.19 生产ssl密钥对
1,cd /usr/local/nginx/conf进入conf目录,
安装 [root@localhost conf]# yum install -y which openssl
2,生成私钥密钥
[root@localhost conf]# openssl genrsa -des3 -out tmp.key 2048
3,转换tmp.key私钥并取消密码,生成一个新的文件zhaosy.key私钥,取消密码
[root@localhost conf]# openssl rsa -in tmp.key -out zhaosy.key
这时候可以删除tmp.key
rm -f tmp.key
4,生产公钥文件
openssl req -new -key zhaosy.key -out zhao.csr
生成公钥
[root@localhost conf]# openssl x509 -req -days 365 -in zhao.csr -signkey zhaosy.key -out zhaogy.crt
证书日期365天
这里就有对应的私钥和公钥文件了,crt是公钥,key是私钥
12.20Nginx配置ssl
1,创建ssl.conf文件,添加内容
vim /usr/local/nginx/conf/vhost/ssl.conf
server
{
listen 443;
server_name zhao.com;
index index.html index.php;
root /data/wwwroot/zhao.com;
ssl on;
ssl_certificate zhaogy.crt;
ssl_certificate_key zhaosy.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
[root@localhost conf]# mkdir /data/wwwroot/zhao.com
2,进入 cd /usr/local/src/nginx-1.8.0,编译源码包
[root@localhost nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
编译完make和make install
[root@localhost nginx-1.8.0]# /usr/local/nginx/sbin/nginx –V //查看
[root@localhost nginx-1.8.0]# /usr/local/nginx/sbin/nginx -t
[root@localhost nginx-1.8.0]# /etc/init.d/nginx restart //重启nginx服务
Restarting nginx (via systemctl): [ 确定 ]
Https的端口默认是443
3,进入[root@localhost nginx-1.8.0]# cd /data/wwwroot/zhao.com
创建测试文件
[root@localhost zhao.com]# vim index.html
在host文件中,另起一行,添加本地ip 跟指定的域名
vim /etc/hosts
这里用curl是有400报错的
[root@localhost zhao.com]# curl -x127.0.0.1:443 https://zhao.com
curl: (56) Received HTTP code 400 from proxy after CONNECT
c:\windows\system32\drivers\etc 更改hosts的文件192.168.211.128 zhao.com
如果不行,可以iptables -F清除一下
12.21php-fpm的pool
这里主要是看php-fpm的一些配置文件,如果所有的网站用一个池子,比如某个配置导致了内存耗完了,会影响到所有的站点,所以让不同的站点用不同的pool.
1,添加pool
这里我们只有定义一个pool
增加pool
[zhao.com]
listen = /tmp/zhao.sock
#listen = 127.0.0.1:9000
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@localhost etc]# /usr/local/php-fpm/sbin/php-fpm -t
[root@localhost etc]# /etc/init.d/php-fpm reload
测试:[root@localhost etc]# ps aux |grep php-fpm
多了很多zhao.com
2,这时候就需要用上它,进入目录
[root@localhost vhost]# cd /usr/local/nginx/conf/vhost/
使用aaa. com.conf
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/zhao.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
}
access_log /tmp/test.com.log zhao;
3,多个pool情况下,每一个pool对应一个相关配置文件,先查看php-fpm.conf配置文件
[root@localhost vhost]# cat /usr/local/php-fpm/etc/php-fpm.conf
4,编辑 php-fpm.conf主配置文件
添加这行就可以www和zhao.com配置设定成各自独立的文件
[root@localhost vhost]# cp /usr/local/php-fpm/etc/php-fpm.conf /usr/local/php-fpm/etc/php-fpm.conf.1 //拷贝一个先
然后删除pool
这里可以用DD100
创建一个mkdir /usr/local/php-fpm/etc/php-fpm.d,用来保存.conf文件
进入php-fpm.d
然后创建pool
[root@localhost php-fpm.d]# vim zhao.com.conf
查看配置是否有错误
[root@localhost php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[root@localhost php-fpm.d]# /etc/init.d/php-fpm reload
在查看,是可以读取到的
[root@localhost php-fpm.d]# ps aux |grep php-fpm
12.22 php-fpm慢执行日志
非常有用
1, 编辑.../www.conf文件,添加内容
[root@localhost php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
request_slowlog_timeout = 1 //超过一秒钟记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log //日志记录地方
2,查看语法错误,reload等
[root@localhost php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[root@localhost php-fpm.d]# /etc/init.d/php-fpm reload
[root@localhost php-fpm.d]# ls /usr/local/php-fpm/var/log/www-slow.log
/usr/local/php-fpm/var/log/www-slow.log
可以看到已经生成了日志
3,创建一个慢执行脚本
[root@localhost php-fpm.d]# vim /data/wwwroot/test.com/sleep.php
[root@localhost php-fpm.d]# cat !$
cat /data/wwwroot/test.com/sleep.php
<?php
echo "test slow log";
sleep(2);
echo "done";
?>
执行测试一下
[root@localhost php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
查看日志
cat /usr/local/php-fpm/var/log/www-slow.log
代表的是sleep的第三行慢,这个是慢执行文件的用处
12.23 open_basedir
1, 编辑www.conf文件
[root@localhost php-fpm.d]# ls
www.conf zhao.com.conf
[root@localhost php-fpm.d]# vim www.conf,增加行
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
2, 编辑php-ini配置文件,添加行错误日志配置
;error_log = /usr/local/php-fpm/var/log/php_errors.log
vim www.conf
手动创建一个错误日志文件,并且更改777权限
[root@localhost php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log www-slow.log
[root@localhost php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log
[root@localhost php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log
因为之前故意改错了,这里错误日志404
cat /usr/local/php-fpm/var/log/php_errors.log 可以在这个目录下查看日志
12.24 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的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
配置文件的注释注意是用;而不是用#号
用static 那么一下子就是生成对应的start数量,空闲进程会慢慢的去销