高效能Http伺服器nginx

2021-09-01 13:48:04 字數 2973 閱讀 8084

nginx介紹:

nginx是一款採用linux 2.6核心epoll新機制開發的web伺服器軟體,能極大地提高web訪問特別是小檔案訪問的i/o效能,是c10k問題的乙個解決方案。在高併發連線的情況下,nginx是apache伺服器不錯的替代品。nginx同時也可以作為7層負載均衡伺服器來使用。

高併發連線:官方測試能夠支撐5萬併發連線,在實際生產環境中跑到2~3萬併發連線數。

記憶體消耗少:在3萬併發連線下,開啟的10個nginx 程序才消耗150m記憶體(15m*10=150m)。

配置檔案非常簡單:風格跟程式一樣通俗易懂。

成本低廉:nginx為開源軟體,可以免費使用。而購買f5 big-ip、netscaler等硬體負載均衡交換機則需要十多萬至幾十萬人民幣。

支援rewrite重寫規則:能夠根據網域名稱、url的不同,將 http 請求分到不同的後端伺服器群組。

內建的健康檢查功能:如果 nginx proxy 後端的某台 web 伺服器宕機了,不會影響前端訪問。

節省頻寬:支援 gzip 壓縮,可以新增瀏覽器本地快取的 header 頭。

穩定性高:用於反向**,宕機的概率微乎其微。

安裝nginx:

rewrite設定:

反向**設定:

location /star

負載均衡設定:

#設定負載均衡的伺服器列表

upstream mysvr

#對 "/" 啟用負載均衡

location /

另參考:

upstream bakend

在需要使用負載均衡的server中增加

每個裝置的狀態設定為:

1.down 表示單前的server暫時不參與負載

2.weight 預設為1.weight越大,負載的權重就越大。

3.max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤

4.fail_timeout:max_fails次失敗後,暫停的時間。

5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。

url hash設定:

1、輪詢(預設)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2、weight

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

例如:upstream tomcats

3、ip_hash

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。

例如:upstream tomcats

4、fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

5、url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。

nginx 開啟ssi:

nginx 也有內建的ssi 模組 ngx_http_ssi_module

配置檔案開啟

ssi on;

ssi_silent_errors on;

ssi_types text/shtml;

這樣就可以支援shtml了

利用proxy_store實現高效的靜態檔案快取伺服器:

location /star

}注意需要乙個定時刪除快取的指令碼:

find /opt/cache/ -type -atime 30 |xargs rm -rf {}

使用nginx的proxy_cache快取功能取代squid

檢視nginx的狀態:

location /nginx_status

防盜煉設定:

1 簡單的通過referer判斷

}2 nginx_httpaccesskey_module 外掛程式

1. ./configure --add-module=path/to/nginx-accesskey

完了以後再重新編譯一次nginx,然後就可以在配置檔案中使了。

location /download

1. <?

2. $ipkeyvalue = md5("mypass".$_server['remote_addr']);

";4. echo $out_keyfile_link;

5. ?>

這樣當乙個使用者將訪問位址拷貝給別人時,因為訪問ip不同,就造成 md5("mypass".ipaddr) 值不同,達到防盜煉目的。

注意:這裡accesskey_signature後面的mypass是干擾碼,你可以改為自己需要的密碼。

nginx限速處理:

限速使用 limit_zone, limit_conn 以及 limit_rate 進行配置

首先在 http 段配置乙個 limit_zone,然後在需要的地方使用 limit_conn 和 limit_rate 進行限速設定,如下乙個簡單的例子

說明:limit_zone,是針對每個ip定義乙個儲存session狀態的容器。這個示例中定義了乙個名叫one的10m大小的容器,這個名字會在後面的limit_conn中使用。

limit_conn one 1;

限制在one中記錄狀態的每個ip只能發起乙個併發連線。

limit_rate 20k;

對每個連線限速20k. 注意,這裡是對連線限速,而不是對ip限速。如果乙個ip允許三個併發連線,那麼這個ip就是限速為limit_rate×3,在設定的時候要根據自己的需要做設定調整,要不然會達不到自己希望的目的。

Nginx高效能伺服器詳解(二)

nginx安裝 linux安裝 前提條件 gcc gcc c pcre pcre devel open openssl yum y install gcc gcc c automake pcre pcre devel zlib zlib devel open openssl devel config...

Nginx高效能WEB伺服器詳解

與root 功能的差別 案例 3 正規表示式 regular expression 匹配location 字尾匹配 匹配任何字尾檔名gif jpg jpeg png css js ico m3u8 ts結尾的請求 ts 檔案匹配m3u8 檔案匹配nginx.conf 配置資訊location gif...

高效能web伺服器nginx簡介

nginx是乙個高效能的http和反向 伺服器軟體,是imap pop3 smtp 伺服器 1,nginx的組成和工作原理 nginx由核心和模組組成 核心 設計微小簡潔 工作,通縮查詢配置檔案將客戶端請求對映到乙個location block,location是nginx配置的乙個命令,用於url...