NGINX的反向代理和負載均衡是網站架構中經常用到的一種高并發,高可用的方案,下面我們直接實戰操作,當然理論也是要的。
一、反向代理
過程:反向代理:客戶端 一>代理 <一> 服務端舉個例子: A(客戶端)想租一個房子,B(代理)就把這個房子租給了他。這時候實際上C(服務端)才是房東。B(代理)是中介把這個房子租給了A(客戶端)。這個過程中A(客戶端)并不知道這個房子到底誰才是房東他都有可能認為這個房子就是B(代理)的總結:反向代理中客戶端是并不知道自己要訪問哪個服務器,反向代理模式屏蔽或者隱藏了真實服務器信息。
結構圖

1、什么是正向代理
過程:客戶端 <一> 代理 一>服務端舉個例子:A(客戶端)想租C(服務端)的房子,但是A(客戶端)并不認識C(服務端)租不到。 B(代理)認識C(服務端)能租這個房子所以你找了B(代理)幫忙租到了這個房子。總結:正向代理最大的特點是客戶端非常明確要訪問的服務器地址;服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。
2、 正向代理和反向代理的區別

3、反向代理各個參數說明

二、負載均衡
說明:客戶端發送的、nginx反向代理服務器接收到的請求數量,就是我們說的負載量,請求數量按照一定的規則進行分發到不同的服務器處理的規則,就是一種均衡規則,所以將服務器接收到的請求按照規則分發的過程,稱為負載均衡。
示意圖

nginx支持的負載均衡調度算法方式: 關于Nginx負載均衡的6種策略
三、實戰操作
1、環境
- 代理服務器(接收所有請求)
- 192.168.8.146
- 服務器
- 1、192.168.8.228:8080
- 2、192.168.8.228:8081
- 3、192.168.8.228:808
1)代理服務器

2)服務器
- 1號服務器
- server {
- listen 8080;
- server_name www.common.com;
- root /www/local;
- charset utf-8;
- index index.php index.html index.htm;
- try_files $uri $uri/ /index.php?$query_string;
- location ~ .php$ {
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
- 2號服務器
- server {
- listen 8081;
- server_name www.common.com;
- root /www/test-common/common/public;
- charset utf-8;
- index index.php index.html index.htm;
- try_files $uri $uri/ /index.php?$query_string;
- location ~ .php$ {
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
- 3號服務器
- server {
- listen 8082;
- server_name www.common.com;
- root /www/test;
- charset utf-8;
- index index.php index.html index.htm;
- try_files $uri $uri/ /index.php?$query_string;
- location ~ .php$ {
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
2、效果



四、總結
這篇文章只是簡單的試了下效果,而且均衡的方式只試了權重,包括代理方面,有些參數沒有配置,歡迎大家補充嘗試。