php語言搭建nginx反向代理,負載均衡常遇到的問題

一、當配置好nginx配置,搭建好反向代理後,出現點擊網站連接找不到路徑404頁面的狀況php

把標出的這行給註釋上就好了,由於這行會重定向以.php結尾的文件,因此不會走下面的location反向代理nginx

二、修改nginx配置,搭建負載均衡redis

其實很簡單,只需配置這兩項就能夠了,注意upstream是和server同級的,不是在server內配置的json

 三、還有一步重要的,實現session共享,我是以redis實現session共享的服務器

首先在服務器裏分別搭建redis服務器,原理是讓每臺網站服務器都redis遠程連接讓session存儲在固定的一臺redis服務器,來實現共享網絡

修改redis配置session

3.一、bind 127.0.0.1是隻容許本機訪問的,不容許redis遠程訪問,修改爲0.0.0.0就能夠訪問了負載均衡

redis3.2版本後新增protected-mode配置,默認是yes,即開啓。設置外部網絡鏈接redis服務,設置方式以下:socket

   一、關閉protected-mode模式,此時外部網絡能夠直接訪問tcp

   二、開啓protected-mode保護模式,需配置bind ip或者設置訪問密碼

設置daemonize yes ,讓redis在後臺自啓,不用每次手動啓動

設置密碼

以上是一些準備工做。

四、修改一下咱們服務器session存儲方式,能夠在php.ini裏改,也能夠用ini_set在頁面裏臨時改。在這建議用ini_set修改,不影響其餘的網站

ini_set("session.save_handler", "redis"); // ini_set("session.bind", '0.0.0.0');
ini_set("session.save_path", "tcp://192.168.0.127:6379"); // ini_set('default_socket_timeout', -1);
    session_start();//存入session
    $_SESSION['hu'] = '123';//鏈接redis
    $redis = new redis(); $redis->connect('192.168.0.127', 6379); // $redis->auth('qw12!@'); //檢查session_idecho 
    echo 'session_id:' . session_id() . '<br/>'; //redis存入的session(redis用session_id做爲key,以string的形式存儲)
    echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>'; echo $_SESSION['name']; //php獲取session值echo 'php_session:' . json_encode($_SESSION['class']); 

注意session_start();不要放在ini_set的前面,否則會報錯

PHP Warning:  ini_set(): A session is active. You cannot change the session module's ini settings at this time in path\to\file.php on line 79
若是要在腳本中使用ini_set()更改PHP的session配置參數,須要在調用session_start()開會會話之前完成ini參數的修改工做,會話已經啓動的時候再去修改SESSION運行時配置參數,將會觸發一個警告級別的錯誤,而且對配置參數的修改也不會生效。
PHP Warning並不會影響後續代碼,能夠在ini_set()前面添加一個 @ 符號來屏蔽錯誤信息。

還有$_SESSION也須要在ini_set後邊才能調用

相關文章
相關標籤/搜索