代理伺服器, 客戶機在發送請求時, 不會直接發送給目的主機, 而是先發送給代理伺服器, 代理服務接受客戶機請求之後, 再向主機發出, 並接收目的主機返回的資料, 存放在代理伺服器的硬碟中, 再發送給客戶機。
2.為什麼要使用代理伺服器 ①提高存取速度由於目標主機返回的資料會存放在代理伺服器的硬碟中, 因此下一次客戶再訪問相同的網站資料時, 會直接從代理伺服器的硬碟中讀取, 起到了緩存的作用, 尤其對於熱門網站能明顯提高請求速度。
②防火牆作用由於所有的客戶機請求都必須通過代理伺服器訪問遠端網站,
互聯網上有許多開發的代理伺服器, 客戶機在訪問受限時, 可通過不受限的代理伺服器訪問目標網站, 通俗說, 我們使用的FQ流覽器就是利用了代理伺服器, 雖然不能出國, 但也可直接訪問外網。
3.正向代理&反向代理 ①正向代理正向代理, 架設在客戶機與目標主機之間, 只用於代理內部網路對Internet的連接請求, 客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送到代理伺服器中。
②反向代理反向代理伺服器架設在伺服器端, 通過緩衝經常被請求的頁面來緩解伺服器的工作量,
現在許多大型web網站都用到反向代理。 除了可以防止外網對內網伺服器的惡性攻擊、緩存以減少伺服器的壓力和訪問安全控制之外, 還可以進行負載均衡, 將使用者請求分配給多個伺服器。
5.為什麼使用nginxnginx是一個羽量級、高性能的web server, 他可以直接作為http server來代替apache, 對PHP需要FastCGI處理器支援, 還可以作為一個反向代理伺服器來實現負載均衡。 雖然apache的mod_proxy和mod_cache也可以實現對多台app server的反向代理和負載均衡, 但是nginx在處理併發上有著很大的優勢。
因為我們要使用nginx反向代理伺服器來達到一個負載均衡的效果, 所以需要搭建至少三台伺服器才可以模擬這個效果。 我使用VMware搭建了三台虛擬機器, 系統是centos6.5.
2.環境因為需要一台伺服器來作為反向代理伺服器, 而且我是phper, 所以反向代理伺服器是linux+nginx+mysql+php。 其餘兩台真實伺服器是linux+apache+mysql+php, 因為apache的性能比較穩定, 模組多而且bug少相對於nginx 來說。
3.搭建環境這個東西要說的太多了, 這裡不一一敘述了, 我有兩篇文章寫了怎麼搭建這兩種環境, 連結:
//有什麼問題可以下方留言, 如果我會的盡力解決。
三、伺服器配置這是我在固定了虛擬機器IP之後, 然後用SecureCRT工具連結。 35這台是反向代理伺服器, 36,37是兩台真實伺服器。
1.編寫測試檔#cd var/www/html;#這裡是預設web目錄, 根據自己實際情況編寫可訪問的一個php檔
#vi index.php#這裡可以隨便寫點東西, 但是要區分開另一台伺服器
另外一台伺服器同理
2.配置反向代理伺服器#cd etc/nginx#跳轉到nginx的配置頁面
#vi nginx.conf修改設定檔
我們在http模組下增加如下配置, 主要是一個upstream和server
upstream blance {
server 192.168.0.36:80; //A伺服器
server 192.168.0.37:80; //B伺服器
}
server{
listen 80;//真實伺服器的埠號
server_name blance;//這個名字就是我們訪問反向代理伺服器的功能變數名稱, 注意與上面的伺服器集群名一致
location / {
proxy_pass http://blance;//這個與上面同理
proxy_set_header Host $host;//轉發請求的頭部
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3.配置訪問功能變數名稱因為是測試, 所以沒有虛擬功能變數名稱, 但是可以自己製造一個。 我的物理機是windows的系統,打開C:WindowsSystem32driversetc然後編輯hosts檔,在檔的末端把你想要請求的功能變數名稱添加進去
保存之後,退出打開流覽器訪問這個功能變數名稱,結果如下:
四、負載均衡策略 1.RR策略就是我們通常說的輪詢策略,每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
2.加權策略指定輪詢幾率,weight和訪問比率成正比,用於後端伺服器性能不均的情況。
只要修改upstream就好了,伺服器就會按照權重去訪問。如上述配置,A伺服器訪問的幾率是2/3,B是1/3,則訪問A兩次,訪問B一次。
3.ip_hash每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。
採用了ip_hash策略之後會針對每個訪問的ip固定一個後端伺服器,就不會再去訪問其他伺服器,在會話保持的時候,可以解決session的問題
上面只寫了幾種常用的東西,還有很多我不知道的、沒寫的歡迎大家一起交流! 我的物理機是windows的系統,打開C:WindowsSystem32driversetc然後編輯hosts檔,在檔的末端把你想要請求的功能變數名稱添加進去保存之後,退出打開流覽器訪問這個功能變數名稱,結果如下:
四、負載均衡策略 1.RR策略就是我們通常說的輪詢策略,每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
2.加權策略指定輪詢幾率,weight和訪問比率成正比,用於後端伺服器性能不均的情況。
只要修改upstream就好了,伺服器就會按照權重去訪問。如上述配置,A伺服器訪問的幾率是2/3,B是1/3,則訪問A兩次,訪問B一次。
3.ip_hash每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。
採用了ip_hash策略之後會針對每個訪問的ip固定一個後端伺服器,就不會再去訪問其他伺服器,在會話保持的時候,可以解決session的問題
上面只寫了幾種常用的東西,還有很多我不知道的、沒寫的歡迎大家一起交流!