结合nginx反向代理构建nginx+lamp实现动静分离以及PHP服务器的负载均衡
准备环境
机器名称 | IP地址 | 内存 | 服务 |
c7--01 | 192.168.2.1 | 1G | nginx服务 |
c7--07 | 192.168.2.7 | 1G | lamp服务 |
c7--08 | 192.168.2.8 | 1G | lamp服务 |
准备c7--01机器环境 安装步骤参考—(Nginx-简介及安装的编译安装)
c7--07:部署 real1节点的lamp服务
准备软件:
[root@C7--07 ~]# ls
httpd-2.2.17.tar.gz mcrypt-2.6.8.tar.gz mysql-5.6.36.tar.gz cmake-2.8.6.tar.gz libmcrypt-2.5.8.tar.gz mhash-0.9.9.9.tar.gz php-5.5.38.tar.gz
安装步骤:
一、安装mysql数据库:十章——MySQL主从复制与读写分离(应用——linux防护与群集)
二、安装httpd:Apache的管理
三 、安装PHP服务:Centos 7.4——LAMP架构分离部署+社区论坛部署
创建index.php文件
[root@C7--07 ~]# vim /usr/local/httpd/htdocs/index.php
<meta charset="utf-8">
<?php
session_start();
$_SESSION['time'] =date("Y:m:d:H:s",time());
echo "本次访问时间"."<font color=red>".$_SESSION['time']."</font>"."<br>";
echo "访问的服务器地址是"."<font color=red>".$_SERVER['SERVER_ADDR']."</font>"."<br>";
echo "访问的服务器域名是"."<font color=red>".$_SERVER['SERVER_NAME']."</font>"."<br>";
echo "SESSIONNAME是"."<font color=red>".session_name()."</font>"."<br>";
echo "SESSIONID是"."<font color=red>".session_id()."</font>"."<br>";
?>
保存退出
c7--08部署 real2节点的lamp服务与c7--07相同
访问测试 192.168.2.7 192.168.2.8
注意: 如果访问不成功那就把index.html移到其他地方
配置 c7--01:Nginx节点的反向代理服务
[root@C7--01 ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream lamp { #配置负载均衡池
server 192.168.2.7:80 weight=1; #加权轮系设置为1
server 192.168.2.8:80 weight=1; #加权轮系设置为1
}
server {
listen 80;
server_name www.benet.com;
location / {
root html;
index index.html index.htm;
}
location ~ \.(asp|aspx|php|jsp|do|js|css|png|jpg)$ { #设置匹配后缀;匹配后跳转到轮询的负载均衡池的地址
proxy_pass http://lamp; #当前是URI(相对路径)
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
保存退出
修改本机的hosts文件 修改 c7--01的hosts文件
访问测试 : http://www.benet.com/ 和 http://www.benet.com/index.php
以上SEDDIONID没变,是浏览器cookie导致的,清除并阻止浏览器的cookie
Cookie的解释 :是一个保存在客户机中的简单的文本文件, 这个文件与特定的 web文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用
查看日志分析访问情况
[root@C7--01 ~]# tail -3 /usr/local/nginx/logs/access.log
192.168.2.254 - - [27/Nov/2021:03:01:11 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.2.254 - - [27/Nov/2021:03:01:21 +0800] "GET /index.php HTTP/1.1" 200 777 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.2.254 - - [27/Nov/2021:03:01:23 +0800] "GET /index.php HTTP/1.1" 200 777 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
[root@C7--07 ~]# tail -3 /usr/local/httpd/logs/access_log
192.168.2.254 - - [27/Nov/2021:02:51:58 +0800] "GET / HTTP/1.1" 200 784
192.168.2.1 - - [27/Nov/2021:03:01:01 +0800] "GET /index.php HTTP/1.0" 200 777
192.168.2.1 - - [27/Nov/2021:03:01:21 +0800] "GET /index.php HTTP/1.0" 200 777
[root@C7--08 ~]# tail -3 /usr/local/httpd/logs/access_log
192.168.2.254 - - [27/Nov/2021:02:51:54 +0800] "GET / HTTP/1.1" 200 790
192.168.2.1 - - [27/Nov/2021:03:01:06 +0800] "GET /index.php HTTP/1.0" 200 777
192.168.2.1 - - [27/Nov/2021:03:01:22 +0800] "GET /index.php HTTP/1.0" 200 777
调整负载调度算法
[root@C7--01 ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream lamp {
server 192.168.2.7:80 weight=1 down backup max_fails=3 fail_timeout=30; #可以设置为最大失败次数;达到最大次数后停止服务30s
server 192.168.2.8:80 weight=1;
}
server {
.......
...
配置nginx会话session保持
注意:客户端实现会话保持后,ip_hash模块默认计算值为客户端访问IP地址的前三段,如
若前三段一致,则会使用同一个hash值,所以在C类地址中,会产生同一个网段的所有主
机访问到同一个web节点的情况