nginx代理,负载均衡,ssl,php-fpm的pool,慢执行日志,open_basedir,php-fpm进程管理

12.16-12.24 nginx代理,负载均衡,ssl,php-fpm的pool,慢执行日志,open_basedir,php-fpm进程管理

nginx代理

这里写图片描述

下面我们以ask.apelearn.com为例。

vim /usr/local/nginx/conf/vhostproxy.conf 
//输入以下内容
server
{
    listen 80;
    server_name ask.apelearn.com;  //域名

    location /
    {
        proxy_pass      http://121.201.9.155/;  //主机ip
        proxy_set_header Host   $host;  
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

curl -x127.0.0.1:80 ask.apelearn.com/robots.txt //可以成功的返回主机的内容

负载均衡

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;  //域名内容和upstream的值一样
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


curl -x127.0.0.1:80 www.qq.com   //这样也能正确的返回qq.com的值

ip_hash是负载均衡的算法。里面除了用户与服务器之间的对应关系,还会记录用户的session,以确保用户即使一段时间不活动,也依然在线的状态。

ssl

传统的网络协议是http协议,这个协议是没有加密的,信息以明文的方式传输。这存在一定的安全隐患,例如如果被黑客抓到了数据包,那么信息就泄露了。为了解决这个问题,可以使用https协议。https协议的加密主要是通过ssl工具。这样在网络上传输的信息就都是经过加密的。即使黑客截取到数据包,也没有办法解密。

 cd /usr/local/nginx/conf  //这是ssl文件保存的位置
 openssl genrsa -des3 -out tmp.key 2048 //key文件为私钥
 openssl rsa -in tmp.key -out aminglinux.key //转换key,取消密码 
 rm -f tmp.key //删除之前需要密码的文件
 openssl req -new -key aminglinux.key -out aminglinux.csr //生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件
 openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt  //这里的aminglinux.crt为公钥


[root@cent01 conf]# ls //密钥文件如下
aminglinux.crt  
aminglinux.csr 
aminglinux.key 


vim /usr/local/nginx/conf/vhost/ssl.conf
//加入如下内容
server
{
    listen 443;   //ssl用443端口
    server_name aming.com;
    index index.html index.php;
    root /data/nginx/aming.com;
    ssl on;  //打开ssl
    ssl_certificate aminglinux.crt;  //公钥
    ssl_certificate_key aminglinux.key;  //私钥
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

 -t && -s reload  //发现报错,需要ssl。这时我们需要重新编译

./configure --help |grep ssl
搜索出--with-http_ssl_module

./configure --prefix=/usr/local/nginx --with-http_ssl_module

-t && -s reload //successful

[root@cent01 nginx-1.13.6]# service nginx restart //重启服务

在电脑上修改hosts后,访问https://aming.com 即可显示ssl的要求。

php-fpm的pool配置

nginx中可以开多个虚拟机,他们都需要php提供服务,所以为了保证每个不同虚拟机的性能,可以开启多个php-fpm的pool服务。每个pool监听一个端口。

方法1:
在 /usr/local/php-fpm/etc/php-fpm.conf中添加内容:

//两个模块命名为不同名字,监听的socket名字也不一样。在vhost相应的conf的中设置对应路径即可。
[www]
listen = /tmp/www.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]
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

/usr/local/php-fpm/sbin/php-fpm -t  //验证配置是否正确
service php-fpm restart  //重启
ps aux |grep php-fpm  //发现aming和www都出现了

方法2:
第一种方法显得不够整洁。可以类似于nginx添加虚拟机时的include语句。

在 /usr/local/php-fpm/etc/php-fpm.conf中添加内容:
include = etc/php-fpm.d/*.conf
然后删掉下面的配置语句。

 mkdir /usr/local/php/etc/php-fpm.d/
 cd /usr/local/php/etc/php-fpm.d/
 vim www.conf //内容如下
[www]
listen = /tmp/www.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

vim aming.conf //内容如下
[aming]
listen = /tmp/aming.sock  //监听的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

//检查vhost的conf文件,相应的更改监听sock

/usr/local/php-fpm/sbin/php-fpm -t  //验证配置是否正确
service php-fpm restart  //重启
ps aux |grep php-fpm  //发现aming和www都出现了

慢执行日志

php-fpm有一个非常有用的功能,就是慢执行日志。可以非常有效的用来诊断系统的问题在哪里。尤其是当系统访问速度慢时。

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  //日志存放目录


vim /data/wwwroot/test.com/sleep.php
//写入如下内容
 <?php echo "test slow log";
 sleep(2);
 echo "done";
 ?>


[root@cent01 vhost]# curl -x127.0.0.1:80 test.com/sleep.php  //测试
test slow logdone
[root@cent01 vhost]# cat /usr/local/php-fpm/var/log/www-slow.log  //慢日志提示第三行花费的时间太多
[16-Nov-2017 20:20:39]  [pool www] pid 14208
script_filename = /data/nginx/test.com/sleep.php
[0x00007f630f62f270] sleep() /data/nginx/test.com/sleep.php:3

当php文件遇到错误时,查错可以在/etc/init.d/php-fpm.ini 文件中打开display_error功能,这样错误就能直接在浏览器上显示。

open_basedir

可以直接在/usr/local/php-fpm/etc/php-fpm.d/www.conf中添加如下语句:

php_admin_value[open_basedir]=/data/nginx/aming.com:/tmp/

配置完成后重启服务 service php-fpm restart 或者 /etc/init.d/php-fpm restart

其中路径需要配置正确。否则会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值