日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一:反向代理:

1:正向代理與反向代理簡介:

正向代理代理客戶端,反向代理代理服務器。

簡單來說 ,代理就是隱藏自己的真實位置,由其他代理來訪問。

既然都這樣,為什么分正反呢,區別在于,正向在于主動,有目的性的指向哪里,而反向在于被動方,無法知道來訪問的真正客戶端是誰。

打個比方:雙方買賣雙方,買家(用戶客戶端)指定去某某商店(某網站),買家可以自己去,也可以叫別人(正向代理)去。到達賣家商店(網站域名)時,肯定可以看到一個收銀的人(服務器IP),這時,真正的老板也不知道來的具體是哪個人(用戶客戶端真實IP或者是代理IP),為了安全,所以老板(web服務器)就請一個收銀員(nginx代理)假裝老板坐那里,不管誰來,都找不著真正的老板(web服務器),拿貨時,只有收銀員(nginx)去后面(反向代理)找老板(web)拿貨給買家。交易完成,誰也沒見到誰,各自安好……

如下圖:用戶通過正向代理,原本IP106.52.xxx.xx,通過67.229.xxx.xx這個代理去訪問。用戶訪問到看到的只是172.16.2.50這個代理服務器,代理服務器里面沒東西,只有反向代理到web服務器拿出數據給用戶。用戶只能訪問看到的只有172.16.2.50這個IP,無法知曉真實的web服務器IP。

Linux運維:nginx反向代理與負載均衡簡介與配置

 

2:nginx反向代理作用:

主要兩種模式:

  • 1:安全 ,保護了真實的web服務器,web服務器對外不可見,外網只能看到反向代理服務器,而反向代理服務器上并沒有真實數據,因此,保證了web服務器的資源安全。
  •  2:負載均衡 ,web服務器往往不是一個單獨服務器,是一個集群,所以需要負載均衡來分擔每臺服務器壓力,增加效率及利用率。

3:nginx反向代理服務器搭建:

搭建環境:兩臺(或多臺web)機器Linux(centos7)

nginx代理服務器,內網IP:172.168.2.50 (已安裝nginx)

外網ip:192.168.200.150 (這里只用到外網IP訪問即可)

 

web1服務器,ip:172.168.2.20(已安裝php,nginx)

web2服務器,ip:172.168.2.21(已安裝php,nginx)(可選)

目標:用戶訪問nginx服務器IP時,返回的數據是web的數據。

nginx安裝參考:yum安裝nginx最新版

web服務搭建參考:Linux手動搭建LNMP

 

3.1):在Nginx反向代理服務器中更改配置文件

vim /etc/nginx/nginx.conf

主要配置是upstream 選項以及在location加上 proxy_pass參數兩部分;

upstream 為真實web服務器IP,proxy_pass里面則為nginx代理服務器IP。

注:upstream位置應該放在http模塊里面 但必須是在server模塊的外面。server模塊也在http模塊中。

本人web1訪問端口已改為9091,web2訪問端口已改為9092。所以加上配置如下:

upstream phpserver1 {
	server 172.16.2.20:9091;
}

upstream phpserver2 {
	server 172.16.2.21:9092;
}

server {
	listen 80;
 	server_name 192.168.200.150;
 	location / {
 	proxy_pass http://phpserver1;
 	index index.html index.htm;
  }
}
server {
 	listen 8080;
 	server_name 192.168.200.150;
 	location / {
 	proxy_pass http://phpserver2;
 	index index.html index.htm;
 	}
}

 

upstream:反向代理的關鍵字,后面名稱可自取,但要玩后面proxy_pass后面名稱一致。

server: 后臺真實的服務器地址,可以是IP或者FQDN(如果是FQDN,別忘記解析)。

listen:監聽的端口,如果沒有把原來nginx做web服務器的配置內容注銷掉,建議改為其他端口。

proxy_pass:后面名稱,此一定要和upstream后面(服務器組名稱)的名稱保持一致。

 

3.2):在web服務器中,更改站點測試首頁。

確保已正確搭建好web服務器,如本人站點目錄為/www。在站點創建測試首頁區分web服務器。

vim /www/index.php

web1輸入簡單測試頁面,web2同理改文字 這是172.16.2.21 web2服務器 即可。

<html>
<head>
<title>PHP 測試</title>
</head>
<body>
<?php echo '<p>這是172.16.2.20 web1服務器</p>'; ?>
</body>
</html>

 

3.3):在瀏覽器輸入nginx代理服務器的地址測試

第一次測試輸入192.168.200.150,不加端口,默認80.

Linux運維:nginx反向代理與負載均衡簡介與配置

 

測試成功,代理服務器已獲取web1的數據。

第二次測試輸入192.168.200.150:8080。

Linux運維:nginx反向代理與負載均衡簡介與配置

 

測試成功,代理服務器已獲取web2服務器的數據。

以上就是代理服務器的簡單設置。

 

 二:負載均衡:

負載均衡之前,需要先了解反向代理,了解后就可以這樣理解負載均衡了:將多臺服務器寫在一個 upstream 模塊中,根據相關參數策略,依次反向代理個多臺服務器,實現負載均衡。

防止服務器斷開連接或者服務器宕機、某一臺服務器過載壓力大。

官網負載均衡配置說明:
http://nginx.org/en/docs/http/load_balancing.html

根據參考文檔,官方提供了三個內置策略:

1:round-robin(輪詢):

默認策略,將請求依次分配給每個服務器。

配置如下:

http {
 	upstream phpserver1 {
 	server 171.16.2.20;
 	server 171.16.2.21;
 	server 171.16.2.22;
 	}

 server {
 	listen 80;
 	location / {
 	proxy_pass http://phpserver1;
 		}
 	}
}

 

假如有10個請求,則:

Linux運維:nginx反向代理與負載均衡簡介與配置

 

這種策略常常和加權輪詢(weight)一起使用(生活中服務器配置有優劣的情況采用):

upstream phpserver1 {
 	server 171.16.2.20 weight=3; # 3/6次
 	server 171.16.2.21 weight=2; # 2/6次
 	server 171.16.2.22 weight=1; # 1/6次
}

 

10個請求,則:

Linux運維:nginx反向代理與負載均衡簡介與配置

 

2:least-connected (最少連接):

由于請求時間長短的關系,有些服務器處理快,有些服務器處理慢,導致有些服務器連接一直存在。則將新來的請求分配給連接最少的那臺服務器:

upstream phpserver1 {
 	least_conn;
 	server 171.16.2.21;
 	server 171.16.2.22;
 	server 171.16.2.23;
}

 

3:ip-hash(ip-hash算法):

根據用戶訪問的IP來分配服務器,每臺服務器只處理某一條IP的請求:

 

upstream phpserver1 {
 	ip_hash;
 	server 171.16.2.21;
 	server 171.16.2.22;
 	server 171.16.2.23;
}

 

三個IP,無論每個IP多少請求:

Linux運維:nginx反向代理與負載均衡簡介與配置

 

4:擴展策略:

如加權輪詢的參數 weight 也屬于一種擴展策略:

可參考官方upstream_module文檔:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

常見參數:

  •  down,表示當前的server暫時不參與負載均衡。
  •  backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。
  •  max_fails,允許請求失敗的次數,默認為1。當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。
  •  fail_timeout,在經歷了max_fails次失敗后,暫停服務的時間。max_fails可以和fail_timeout一起使用。
  •  slow_start,當一臺有問題服務器恢復正常使用時,或由不可用恢復可用狀態,服務器權重從0恢復到正常值的時間。默認值為0,默認禁止。注:該參數不能與 hash 、 ip_hash 和 random 參數一起使用。

配合內置策略使用舉例:

upstream phpserver1 {
 	server 171.16.2.20 weight=5;
 	#權重最高,處理請求最多

 	server 171.16.2.21:8080 fail_timeout=5s slow_start=30s;
 	#暫停5秒服務,30秒后啟動服務

 	server 171.16.2.22 max_fails=3;
 	#失敗連接最大數為3,失敗后返回proxy_next_upstream

 	server 171.16.2.23 down;
 	#不啟用負載均衡策略

 	server 171.16.2.24:8080 backup;
 	#其他所有服務器宕機后,啟動的備份服務器
 	}

server {
 	location / {
 	proxy_pass http://phpserver1;
 	health_check;
 	}
}

 

4:代理配置的部分配置文件說明(僅供參考):

更多詳見http_proxy_module模塊官方文檔:
https://nginx.org/en/docs/http/ngx_http_proxy_module.html

參數 : 解釋

  • include mime.types; #文件擴展名與文件類型映射表
  • default_type Application/octet-stream; #默認文件類型,默認為text/plain
  • access_log off; #取消服務日志
  • log_format myFormat ' $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
  • access_log log/access.log myFormat; #combined為日志格式的默認值
  • sendfile on; #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。
  • sendfile_max_chunk 100k; #每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。
  • keepalive_timeout 65; #連接超時時間,默認為75s,可以在http,server,location塊。
  • proxy_connect_timeout 1; #nginx服務器與被代理的服務器建立連接的超時時間,默認60秒
  • proxy_read_timeout 1; #nginx服務器想被代理服務器組發出read請求后,等待響應的超時間,默認為60秒。
  • proxy_send_timeout 1; #nginx服務器想被代理服務器組發出write請求后,等待響應的超時間,默認為60秒。
  • proxy_http_version 1.0 ; #Nginx服務器提供代理服務的http協議版本1.0,1.1,默認設置為1.0版本。
  • proxy_method get; #支持客戶端的請求方法。post/get;
  • proxy_ignore_client_abort on; #客戶端斷網時,nginx服務器是否終端對被代理服務器的請求。默認為off。
  • proxy_ignore_headers "Expires" "Set-Cookie"; #Nginx服務器不處理設置的http相應投中的頭域,這里空格隔開可以設置多個。
  • proxy_intercept_errors on; #如果被代理服務器返回的狀態碼為400或者大于400,設置的error_page配置起作用。默認為off。
  • proxy_headers_hash_max_size 1024; #存放http報文頭的哈希表容量上限,默認為512個字符。
  • proxy_headers_hash_bucket_size 128; #nginx服務器申請存放http報文頭的哈希表容量大小。默認為64個字符。
  • proxy_next_upstream timeout ; #反向代理upstream中設置的服務器組,出現故障時,被代理服務器返回的狀態值。error/timeout/invalid_header/http_500/http_502/http_503/http_504/http_404/off
  • proxy_ssl_session_reuse on; #默認為on,如果我們在錯誤日志中發現“SSL3_GET_FINSHED:digest check failed”的情況時,可以將該指令設置為off。

分享到:
標簽:nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定