反向代理和正向代理以及Nginx工具的簡要使用

正向代理css

正向代理也就是傳說中的代理。node

好比咱們經常使用的FQ軟件就是這個代理者。用戶將請求發送至代理服務器,代理服務器向實際請求位置獲取數據,而後打包發送至用戶。nginx

從網站來說,網站是不知道請求者的信息的,只對代理服務器進行記錄,是否知道用戶信息取決於代理服務器是否告訴網站。web

結論就是正向代理是一個位於客戶端可服務端之間的服務器,從服務端獲取客戶端須要訪問的內容經過代理服務器返回給客戶端。正則表達式

反向代理後端

當用戶訪問的內容在當前服務器上面不存在的時候,恰好該服務器設置了反向代理功能,又恰好在反向代理的服務器列表中的某一臺服務器有這個頁面,那麼代理者會把這個內容返回給客戶端。可是客戶端卻當作目標服務器上存在該頁面。緩存

通俗一點來說,咱們打某某客服電話的時候撥通的是一個固定的電話號碼,可是服務檯會幫咱們轉接至空閒的客服人員,而對於客戶來說,只要能幫咱們解決問題就好了,哪一個客服沒有關係。tomcat

對於網站優化來說,當面對成千上萬的訪問者時,反向代理會將請求分別分給給不一樣的服務器實現相同的功能,這樣就能大大的減小服務器的負荷。服務器

Nginx工具的做用以及使用方法app

剛剛咱們說到了反向代理實現服務器的負載均衡,如今咱們來聊一下具體實現。

1. Nginx的安裝

下載Nginx,解壓,安裝到指定目錄。

lap@lap-KVM:~$ wget http://labfile.oss.aliyuncs.com/nginx-1.7.9.tar.gz
lap@lap-KVM:~$ tar zxvf nginx-1.7.9.tar.gz
lap@lap-KVM:~$ cd nginx-1.7.9
lap@lap-KVM:~/nginx-1.7.9$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module
lap@lap-KVM:~/nginx-1.7.9$ # make && make install

切換到Nginx的安裝目錄下,啓動Nginx。

lap@lap-KVM:~$ cd /usr/local/nginx/
lap@lap-KVM:/usr/local/nginx$ sudo ./nginx-1.7.9/objs/nginx

此時訪問本機將會看到Nginx的歡迎界面。

安裝好了Nginx以後咱們開始具體的配置。

2. 配置nginx.conf文件

nginx.conf裏提供了不少調節優化的地方,這裏簡述http模塊的幾個經常使用參數,詳細配置請google一下。

簡單介紹一下紅色方框內的一些配置參數。

第一個方框內的是關於日誌的設置:

  • log_format 定義日誌格式

  • access_log 設置是否保存訪問日誌,設置爲off能夠下降磁盤IO而提高速度。

第二個方框內的是一些基本設置:

  • sendfile 指向sendfile()函數。sendfile()在磁盤和TCP端口(或者任意兩個文件描述符)之間複製數據。sendfile()直接從磁盤上讀取數據到操做系統緩衝,所以會更有效率。

  • tcp_nopush 配置nginx在一個包中發送所有的頭文件,而不是一個一個發送。

  • tcp_nodelay 配置nginx不要緩存數據,快速發送小數據。

  • keepalive_timeout 指定了與客戶端的keep-alive連接的超時時間。服務器會在這個時間後關閉連接。

第三個方框內的是關於壓縮功能的設置:

  • gzip 打開壓縮功能能夠減小須要發送的數據的數量。

  • gzip_disable 爲指定的客戶端禁用 gzip 功能。

  • gzip_proxied 容許或禁止基於請求、響應的壓縮。設置爲any,就能夠gzip全部的請求。

  • gzip_comp_level 設置了數據壓縮的等級。等級能夠是 1-9 的任意一個值,9 表示最慢可是最高比例的壓縮。

  • gzip_types 設置進行 gzip 的類型。

接下來看一下http模塊中的子模塊server,以及server中的子模塊location的配置:

其中:

  • listen 表示當前的代理服務器監聽的端口,默認的是監聽80端口。

  • server_name 表示監聽到以後須要轉到哪裏去,localhost表示轉到本地,也就是直接到nginx文件夾內。

  • location 表示匹配的路徑。

  • root 表示到指定文件路徑尋找文件,可用於靜態文件。

  • index 表示默認主頁,能夠指定多個,按順序查找。

  • deny和allow 是訪問控制設置,禁止或容許某個IP或者某個IP段訪問。也能夠指定unix,容許socket的訪問。

  • limit_rate_after 設置不限速傳輸的響應大小。當傳輸量大於此值時,超出部分將限速傳送。

  • limit_rate 限制向客戶端傳送響應的速率限制。參數的單位是字節/秒,設置爲0將關閉限速。好比圖片中表示不限速部分爲3m,超過了3m後限速爲20k/s。

Nginx+Tomcat

在nginx.conf中新建一個location,用正則表達式將全部JSP的請求匹配到該location中:

  • proxy_set_header Host $host; 後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP。

  • client_max_body_size 10m; 容許客戶端請求的最大單文件字節數。

  • client_body_buffer_size 128k; 緩衝區代理緩衝用戶端請求的最大字節數。

  • proxy_connect_timeout 90; Nginx跟後端服務器鏈接超時時間。

  • proxy_read_timeout 90; 鏈接成功後,後端服務器響應時間。

  • proxy_buffer_size 4k; 設置代理服務器保存用戶頭信息的緩衝區大小。

  • proxy_buffers 6 32k; proxy_buffers緩衝區。

  • proxy_busy_buffers_size 64k; 高負荷下緩衝大小。

  • proxy_temp_file_write_size 64k; 設定緩存文件夾大小。

對於靜態文件的請求,咱們也新建一個location,將常見圖片、css、js等請求匹配到該location中:

配置很是簡單,經過root關鍵字,將匹配到的請求都到tomcat/webapps/ROOT目錄下直接查找。而expires 30d則表示使用expires緩存模塊,緩存到客戶端30天。若是未緩存這些文件,咱們訪問的Tomcat主頁將會沒有任何樣式,這樣就不美觀了。

以後就到了最關鍵的負載均衡的配置的,咱們在其中加入分攤載荷的服務器列表:

這樣就能將用戶的請求發送到不一樣的服務器上面了,另外也能夠給不一樣的服務器添加不一樣的優先級,在server後面加上一個權重weight,權重越大表示訪問到的機會越大,默認爲1。

這樣一個完整的反向代理就實現了。

相關文章
相關標籤/搜索