LNMP功能配置-下

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的请求给服务器;

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

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

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

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

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

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

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

参考:数字证书原理

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配置 











猜你喜欢

转载自blog.csdn.net/swtirene/article/details/80967099