1、配置nginx/conf
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream urlbox { ip_hash;#同一个ip访问一个站点,可以注释掉 server 127.0.0.1:8812 weight=1 max_fails=2 fail_timeout=30s; server 127.0.0.1 weight=2 max_fails=2 fail_timeout=30s; } server { listen 80;#端口 server_name localhost;#解析的域名 location / { proxy_pass http://urlbox; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
解释:
weight涌现的几率,默认为1,配置高的做事器可以设置得高一些;server 127.0.0.1:8812 weight=1; 正规做事器这里127.0.0.1:8812,要换成做事器的局域网地址,192.168..;upstream urlbox,这里的urlbox可以换成任意的;proxy_pass http://urlbox; 反向代理;3、4的urlbox是对应的;ip_hash; 是只同一个IP访问一个站点;max_fails失落败次数;fail_timeout失落败韶光;max_fails,fail_timeout 不添加默认即可;2、A,B两台做事器作为代理,用于展示网站内容
A(127.0.0.1:8812)127.0.0.1:8812这个网址要可以访问到展示的网站;B(127.0.0.1)同A也要访问到网站;数据库放到链接C做事器(127.0.0.1:8800),A、B2个网站数据库地址都利用C做事器的;C做事器,用于添加信息,所上传的图片、压缩包等附件,须要填写完全的网址,不能是public/这样的,A、B网站没法显示附件,要利用http://网址/public/图片地址;
3、存储用户上岸信息
如果upstream urlbox 不加入 ip_hash(用于一个IP访问一个站点),须要利用redis存储用户上岸信息,防止一个做事器出问题切换到另一个的时候用户退出了上岸;如果不想利用redis,也可以利用文件存储的办法在C做事器存储用户的上岸信息,利用curl读取C做事器的用户信息,判断是否已经超时;redis存储读取示例:
<?php $redis = new Redis(); $redis->connect('192.168.100.2', 6379);//192.168.100.2为安装redis的IP $redis->auth('cms168');//redis.windows.conf 443行requirepass 设置的密码 $username='ttt'; $redis->set('user_'.$username,time(),15);//15为设置的有效期 15秒 if(!$redis->get('user_'.$username)){ echo '已经退出登录'; }?>
redis存储数组信息:
由于不能直接存储数组信息,可以利用序列化和反序列化转换
<?php $redis = new Redis(); $redis->connect('192.168.100.2', 6379); $redis->auth('cms168'); $lgninfo=serialize(array('username'=>'ttt','lgntime'=>time())); $redis->set("ulogin", $lgninfo,15); var_dump( unserialize($redis->get('ulogin')));?>