Nginx负载均衡
Nginx负载均衡需要用到upstream模块,upstream模块用于定义多个web server,通过算法将访问请求分发到不同的web server。
配置方式:
这里以qq.com为例,先使用dig命令获取qq.com的服务器ip
然后在/usr/local/nginx/conf/vhost/目录下创建一个文件qq_com.conf,写入如下的内容:
配置完检测语法,重新加载配置
Nginx配置SSL
SSL工作原理
1: 浏览器发送一个https的请求给服务器;
Nginx配置SSL证书
自己生成SSL证书
实际工作环境都是在证书颁发机构购买SSL证书,这样的证书会自动通过浏览器的信任,我们自己生成的SSL证书是不会自动通过浏览器的信任的,浏览器会弹出相应的提示。
比如https://www.12306.cn这个网站就是自己颁发的SSL证书,不被浏览器信任的。首先进入nginx的配置文件存放目录 /usr/local/nginx/conf
然后需要用到命令openssl,如果没有这个命令,需要yum install openssl即可
genrsa表示生成rsa类型的私钥文件,-des3表示使用des3加密算法,-out 指定生成的私钥文件名,2048表示加密算法的长度为2048位
生成私钥文件必须输入两次密码,但是有密码的私钥比较麻烦,下面就来取消私钥文件的密码。
##这样就得到了一个没有密码的私钥文件
生成证书请求文件,需要拿证书请求文件和没有密码私钥一起生产公钥文件
生成公钥文件:
查看刚才生成的文件:
添加nginx的SSL配置文件
在/usr/local/nginx/conf/vhost/目录下创建一个文件ssl_test.conf,写入下面的配置内容:
如果出现错误:nginx: [emerg] unknown directive “ssl”,需要重新编译安装nginx 加上–with-http_ssl_module
然后重新检测语法错误, 重载配置文件
查看443端口是否监听:
[root@server-lnmp vhost]# netstat -lntp | grep 443tcp
0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1330/nginx: master
测试访问
curl 访问本地的https需要添加hosts
echo '127.0.0.1 www.test.com test.com' >> /etc/hosts
curl测试访问:
php-fpm的pool
php-fpm也可以配置类似nginx虚拟主机的pool,可以将每个pool做成一个单独的配置文件
PHP进程管理
文件描述符参考:最大文件描述符详解
配置方式
在/usr/local/php-fpm/etc/php-fpm.conf 配置文件的 [global] 部分添加一行配置,并删除[www]部分的内容。
在/usr/local/php-fpm/etc/php-fpm.conf 文件修改后的内容如下:
创建pool配置文件存放目录:
mkdir /usr/local/php-fpm/etc/php-fpm.d
在pool配置文件存放目录创建pool配置文件 www.conf 并写入以下内容:
再将www.conf文件复制一份命名为test.conf,然后修改内容如下:
检查php-fpm配置语法错误。重载配置文件:
检查php-fpm进程
php-fpm慢执行日志
当有时候访问php网页慢的时候,可以开启慢执行日志来查看是否是PHP代码执行时间过长,还可以看到具体是哪个PHP文件的哪一行导致的慢执行。
配置方式
vim /usr/local/php-fpm/etc/php-fpm.d/test.conf 加入如下内容:
配置nginx的虚拟主机test.com.conf,把unix:/tmp/php-fcgi.sock改为10.1.1.28:9000
重新加载nginx配置,在/data/wwwroot/www.test.com/目录下创建一个测试文件pool.php
测试效果
使用curl测试访问www.test.com/pool.php
查看慢执行日志
php-fpm的open_basedir
设定open_basedir可以使PHP只能访问指定目录下的文件,可以在虚拟主机配置中配置open_basedir,也可以在php的pool池中配置open_basedir
配置方式
修改/usr/local/php-fpm/etc/php-fpm.d/test.conf 配置文件
添加open_basedir的配置:
修改/usr/local/php-fpm/etc/php.ini
将error_reporting的参数修改为E_ALL,修改error_log日志文件路径:
重启php-fpm服务:
测试效果
curl测试访问www.test.com/test.php,出现错误 :
查看php错误日志:
再修改/usr/local/php-fpm/etc/php-fpm.d/test.conf 配置文件
将open_basedir修改为正确的路径:
重载php-fpm服务配置在再次访问测试页www.test.com/test.php:
扩展
针对请求的uri来代理
根据访问的目录来区分后端的web
nginx长连接
nginx算法分析
nginx中的root和alias区别
nginx的alias和root配置