zoukankan      html  css  js  c++  java
  • Nginx负载均衡会话共享

     

     

    在使用负载均衡的时候会遇到会话保持的问题,可通过如下方式进行解决

    1.使用nginx的ip_hash,根据客户端的来源IP,将请求分配到相同服务器上

    2.基于服务端的Session会话共享(mysql/memcache/redis/file)

     

    在解决负载均衡会话问题我们需要了解session和cookie。

    1.用户第一次请求服务端网站时,服务端会生成对应的session_id,然后存储至客户端浏览器的cookie中。

    2.客户端尝试登陆服务端网站时,浏览器的请求头自动携带cookie信息,在cookie信息中保存的则是session_id。

    3.客户端登陆服务端网站后,服务端会将session_id存储在本地文件中, 当用户下次请求网站时会去查询用户提交的cookie作为key去存

    储里找对应的value(session)

    注意: 同一域名下的网站登陆后cookie都是一样的。所以无论负载后端有几台服务器,无论请求分配到哪一台服务器上同一用户的cookie是不会发生变化的。也就是说cookie对应的session也是唯一的。所以,这里只要保证多台业务服务器访问同一个共享服务器(memcache/redis/mysql/file)就行了。

    ~                             

    后端web01web02安装PHPadmin

    #安装PHPadmin

    [root@web02 code]# pwd

    /root/code

    [root@web02 code]# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip

     

    #解压

    [root@web02 code]# unzip phpMyAdmin-4.9.1-all-languages.zip 

     

    #修改PHPadmin配置文件名称

    [root@web02 ~]# cd code/phpMyAdmin-4.9.1-all-languages/

    [root@web02 phpMyAdmin-4.9.1-all-languages]# cp config.sample.inc.php config.inc.php

     

    # 修改远程数据库的地址

    [root@web02 phpMyAdmin-4.9.1-all-languages]# vim config.inc.php 

     

    #修改NGINX配置文件

    [root@web02 ~]# #vim /etc/nginx/nginx.conf 

     

    [root@web02 ~]# grep "listen 83" /etc/nginx/nginx.conf  -B  1 -A 15

    server {

                    listen 83;

                    server_name _;

                    root /root/code/phpMyAdmin-4.9.1-all-languages;

                    location / {

                            index index.php index.html;

                    }

     

                    location ~ .php$ {

                    fastcgi_pass 127.0.0.1:9000;

                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

     

                    include fastcgi_params;

                    }

                    }

    #检查语法&&加载配置文件

    [root@web02 ~]# nginx -t

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

    nginx: configuration file /etc/nginx/nginx.conf test is successful

    [root@web02 ~]# nginx -s reload

     

     

    #测试

     

    现在问题来了  

    Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

     

    说是没权限

    [root@web02 ~]# cd /var/lib/php/session

    [root@web02 session]# ls

    [root@web02 session]# cd ..

    [root@web02 php]# ll

    总用量 8

    drwxrwx--- 2 root apache 4096 9月  12 03:07 session

    drwxrwx--- 2 root apache 4096 9月  12 03:07 wsdlcache

    [root@web02 php]# chown -R www.www .

    [root@web02 php]# ll

    总用量 8

    drwxrwx--- 2 www www 4096 9月  12 03:07 session

    drwxrwx--- 2 www www 4096 9月  12 03:07 wsdlcache

    [root@web02 php]# 

     

     

     现在访问是可以了,输入以下登录用户名 && 密码即可

     

    #将PHPadmin和nginx的配置文件以及配置用scp推送到另外一台web服务器上重新加载nginx即可

     

     

     

     

     

     

  • 相关阅读:
    python-字典
    C#公历转农历算法
    GridView控件显示图片
    SQLite DBHelp
    面向服务体系结构:适用于敏捷的系统
    针对 .NET 框架的安全编码指南
    Microsoft .NET Pet Shop 4
    C#.NET数据库访问类DBHelper
    Emgu CV 高斯建模
    .NET代码编写规范 整理
  • 原文地址:https://www.cnblogs.com/sseban/p/11745346.html
Copyright © 2011-2022 走看看