當前位置:
首頁 > 知識 > Nginx 反向代理、負載均衡

Nginx 反向代理、負載均衡

## Nginx 反向代理。

(一)簡介

一、什麼是代理伺服器

客戶機原本發送給伺服器的請求,不會直接發送給伺服器,而是先發送給代理伺服器;經過代理伺服器處理後轉發給伺服器伺服器數據處理後轉回給代理伺服器代理伺服器再返回給客戶機的一個過程。

Nginx 反向代理、負載均衡

二、代理伺服器的作用

1. 防火牆作用

由於所有的客戶機請求都必須通過代理伺服器訪問遠程站點,因此可在代理伺服器上設限,過濾某些不安全信息;

2. 提高Web訪問速度

可以緩存真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力;

3. 實現負載均衡

內部可以採用多台伺服器來組成伺服器集群,外部還是可以採用一個地址訪問;

(二)架構思路

一、架構圖

Nginx 反向代理、負載均衡

先來分析這張圖:

1. 用戶會訪問 「10.167.167.167(默認80埠)」 。

2. Nginx收到 PC 端的HTTP請求。

3. Nginx根據配置將請求負載到 三台Apache的機子上去。

4. Apache伺服器將數據處理後返回給Nginx。

5. Nginx將數據返回PC

(二)看完以上的分析後,可能大家有會幾個問題:

1. 為什麼使用Nginx做代理伺服器?

a) 輕量級,同樣起web 服務,比apache 佔用更少的內存及資源;

b) 非阻塞、高並發連接:數據複製時,磁碟I/O的第一階段是非阻塞的。官方測試能夠支撐5萬並發連接,在實際生產環境中跑到2~3萬並發連接數;

2. 為什麼使用Apache後台伺服器?

a) rewrite ,比nginx 的rewrite 強大;

b) 少bug ,nginx 的bug 相對較多;

c) 穩定

三、架構實戰

(一) Nginx、Apache 安裝

1. http://www.cnblogs.com/bluebirds/p/6386649.html(這是之前講到的在window安裝nginx的案例, Linux也很簡單,這裡就不做多講了)

(二)Nginx配置

1. Nginx.conf

進程數與每個進程的最大連接數

Nginx進程數,建議設置為等於CPU總核心數

單個進程最大連接數,那麼該伺服器的最大連接數 = 連接數 * 進程數

#user apache;
worker_processes 4; # 工作進程的個數

events {
use epoll;
worker_connections 1024; # 單個進程的連接數
}

http {
# 伺服器集群(Apache) weight 分配權重 權重越大 分配概率越高.
upstream php_pool{
server 192.168.10.101:8080 max_fails=0 fail_timeout=30s weight=1;
server 192.168.10.102:8080 max_fails=0 fail_timeout=30s weight=1;
server 192.168.10.103:8080 max_fails=0 fail_timeout=30s weight=2;
}
}

server {
listen 80;
server_name www.test.com; # 域名 本地
access_log /data/www/logs/nginx_log/access/www.test.com_access.log main ;
error_log /data/www/logs/nginx_log/error/www.test.com_error.log ;
root /data/www/vhosts/www.test.com/httpdocs ;
index index.html index.php;
error_page 404 403 /404.html;

location ~ .php$ {
proxy_pass http://php_pool; # 服務集群池
include proxy_params;
expires -1;
}

location / {
include proxy_params;
if (!-d $request_filename){
set $flag 1$flag;
}
if (!-f $request_filename){
set $flag 2$flag;
}
if ($flag = "21"){
proxy_pass http://php_pool;
expires -1;
}
}
}

以上就是 反向代理的配置,只要理解服務的訪問過程及原理,應該是不難的。

四、學習總結

本章藉助Nginx 和 Apache 搭建了反向代理伺服器,實在的基本的負載均衡。

在目前大多數的應用中,都會將Nginx部署在Linux伺服器中,並且會做一些針對負載均衡的優化配置;

經過這次也更加深入的了解了 Nginx 和 Apache 服務配置兩種服務的優缺點,能夠更準確的在場景中運用。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

ASP.NET CORE小試牛刀:乾貨
擴展SQLite使其能從apk文件中讀取db
業餘草教你解讀Spark源碼閱讀之HistoryServer

TAG:達人科技 |

您可能感興趣

Nginx反向代理和負載均衡部署指南
nginx 負載均衡
負載均衡-Ribbon 的負載均衡策略
網站集群架構實戰(LVS負載均衡Nginx代理緩存Nginx動靜分離等)
Feign實現和負載均衡
Django(Ngnix)項目部署 負載均衡
Keepalived+Nginx實現負載均衡高可用
nginx負載均衡與調度演算法
Linux下Nginx+多Tomcat負載均衡實現詳解
fabio負載均衡入門
史上最詳細的Nginx負載均衡教程
在 Linux 上用 DNS 實現簡單的負載均衡
搭建高可用負載均衡器:haproxy+keepalived
負載均衡zookpeer之輪詢演算法
LVS/DR+keepalived負載均衡實現
Ansible自動部署nginx+keepalived高可用負載均衡
Spring Cloud客戶端負載均衡Ribbon筆記
負載均衡session共享的三種處理方法
Portworx與HPE合作為容器工作負載提速
Facebook開源Katran負載均衡器並公開Provisioning Tool