您的位置:首頁>正文

Nginx 反向代理、負載均衡

## Nginx 反向代理。

(一)簡介

一、什麼是代理伺服器

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

二、代理伺服器的作用

1. 防火牆作用

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

2. 提高Web存取速度

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

3. 實現負載均衡

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

(二)架構思路

一、架構圖

先來分析這張圖:

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 服務配置兩種服務的優缺點, 能夠更準確的在場景中運用。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示