導航:首頁 > 使用方法 > nginx使用方法

nginx使用方法

發布時間:2022-10-04 04:21:50

❶ 使用 Nginx 限流

Nginx不僅可以做Web伺服器、做反向代理、負載均衡,還可以做限流系統。此處我們就Nginx為例,介紹一下如何配置一個限流系統。

Nginx使用的限流演算法是漏桶演算法。

(1)安裝Nginx。
如果你的Linux是Ubuntu或Debian,使用apt-get安裝,在命令行中輸入以下命令:

如果是CentOS,使用yum安裝,在命令行中輸入以下命令:

(2)找到Nginx所使用的配置文件所在的位置。在Ubuntu和Debian是在如下位置:

而CentOS則是在如下位置:

(3)在http塊中,配置基礎的限流配置:

其中4到8行定義的是一個伺服器介面。而第2行和第6行配合完成了一個限流設置,下面解釋一下這兩行做的事情:

limit_req_zone命令在Nginx的配置文件中專門用於定義限流,它必須被放在http塊中,否則無法生效,因為該命令只在http中被定義。

該欄位包含三個參數:

第一個參數,就是鍵(key),即值$binary_remote_addr所在的位置,它代表的是我們的限流系統限制請求所用的鍵。

此處,我們使用了$binary_remote_addr,它是Nginx內置的一個值,代表的是客戶端的IP地址的二進製表示。因此換言之,我們的示例配置,是希望限流系統以客戶端的IP地址為鍵進行限流。

對Nginx有經驗的讀者可能還知道有一個Nginx內置值為binary_remote_addr是Nginx的社區推薦用值,因為它是二進製表達,佔用的空間一般比字元串表達的$remote_addr要短一些,在寸土寸金的限流系統中尤為重要。

第二個參數是限流配置的共享內存佔用(zone)。為了性能優勢,Nginx將限流配置放在共享內存中,供所有Nginx的進程使用,因為它佔用的是內存,所以我們希望開發者能夠指定一個合理的、既不浪費又能存儲足夠信息的空間大小。根據實踐經驗,1MB的空間可以儲存16000個IP地址。

該參數的語法是用冒號隔開的兩個部分,第一部分是給該部分申請的內存一個名字,第二部分是我們希望申請的內存大小。

因此,在該聲明中,我們聲明了一個名叫mylimit(我的限制)的內存空間,然後它的大小是10M,即可以存儲160000個IP地址,對於實驗來說足夠了。

第三個配置就是訪問速率(rate)了,格式是用左斜杠隔開的請求數和時間單位。這里的訪問速率就是最大速率,因此10r/s就是每秒10個請求。通過這台Nginx伺服器訪問後端伺服器的請求速率無法超過每秒10個請求。

注意到第5行聲明了一個資源位置/test/,因此我們第6行的配置就是針對這個資源的,通俗地說,我們在第6行的配置是針對特定API的,這個API就是路徑為/test/的API,而其真正路徑就是第8行聲明的 http://backend 。注意,這個URL是不存在的,實際操作中,讀者需要將它換成你已經開發好的業務邏輯所在的位置,Nginx在這里的作用只是一個反向代理,它自己本身沒有資源。

第6行中,我們使用limit_req命令,聲明該API需要一個限流配置,而該限流配置所在位置(zone)就是mylimit。

這樣一來,所有發往該API的請求會先讀到第6行的限流配置,然後根據該限流配置mylimit的名稱找到聲明在第2行的參數,然後決定該請求是否應該被拒絕。

但是這樣還不夠。不要忘了,Nginx使用的漏桶演算法,不是時間窗口演算法,我們前文介紹中說過,漏桶演算法是有兩個參數可以配置的!

(4)配置峰值。Nginx漏桶演算法的峰值屬性在API中設置。參數名為burst。如下:

在第6行中,我們只需要在聲明limit_req的同時,指定burst就可以了,此處我們指定burst為20,即漏桶演算法中我們的「桶」最多可以接受20個請求。

這樣一個Nginx的限流系統就配置完畢了,但實際操作中,我們還可能需要很多別的功能,下面筆者就介紹幾個很有用的配置技巧。

相對於傳統的漏桶演算法慢吞吞地轉發請求的缺陷,Nginx實現了一種漏桶演算法的優化版,允許開發者指定快速轉發,而且還不影響正常的限流功能。開發者只需要在指定limit_req的一行中指定burst之後指定另一個參數nodelay,就可以在請求總數沒有超過burst指定值的情況下,迅速轉發所有請求了。如下所示:

您可能會擔憂:這種情況下,會不會出現所有請求都被快速轉發,然後接下來又有沒有超過burst數量的請求出現,再次被快速轉發,就好像固定窗口演算法的漏洞一樣,從而超過我們本來希望它能限制到的上限數量呢?答案是不會。Nginx的快速轉發是這樣實現的:

舉例而言,配置如上所示,假如在某個瞬時有25個請求進入系統,Nginx會先轉發20個(或21個,取決於瞬時情況),然後拒絕剩下的4個請求,並將當前桶中數量標為0,然後接下來的每100毫秒,緩慢恢復1個空位。

這樣我們可以看到,Nginx既做到了快速轉發消息,又不會讓後端伺服器承擔過多的流量。

限流系統會提前拒絕請求,因此,我們在業務伺服器上是肯定看不到這些請求的。假如我們收到一個報告說某用戶在使用網站的時候出現錯誤,但是我們在業務伺服器上又找不到相關的日誌,我們如何確定是不是限流造成的呢?

只有限流系統的日誌才能說明問題。因此,我們需要Nginx列印出它拒絕掉的請求的信息。但同時,Nginx列印的限流日誌默認是錯誤(error),如果我們設置了一個基於日誌錯誤掃描的警報,它掃到的限流錯誤,真的是我們希望給自己發警報的情況嗎?

配置請求的位置就在資源中,使用的命令是limit_req_log_level,如下:

在第7行中,我們將Nginx的日誌改為了警告(warn)。

限流的HTTP標准響應狀態碼是429,但是如果讀者拿上述的配置文件直接去測試,會發現Nginx返回的是503(服務不可用)。到底應該返回什麼狀態碼,是一個偏程序哲學的問題,此處我們不討論,我們只討論:如何讓Nginx返回我們指定的狀態碼?

答案也是在同一個資源中,它的配置命令是limit_req_status,然後我們指定它為429即可:

除了以上功能以外,Nginx還支持很多復雜先進的限流功能,可以訪問 https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/ 作進一步的了解。

❷ 如何 使用 nginx 的ngx

在upstream中使用nginx變數的方法操作流程是:1. 創建upstream數據結構。if (ngx_http_upstream_create(r) != NGX_OK) {return NGX_HTTP_INTERNAL_SERVER_ERROR;}2. 設置模塊的tag和schema。schema現在只會用於日誌,tag會用於buf_chain管理。

❸ Nginx相關知識點

Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年發布至今,憑借開源的力量,已經接近成熟與完善。

Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。並且支持很多第三方的模塊擴展。

Nginx的穩定性、功能集、示例配置文件和低系統資源的消耗讓他後來居上,在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。

自行安裝

正向代理: 代理伺服器站在客戶端那邊就是正向代理;
反向代理: 代理伺服器站在原始伺服器那邊就是反向代理;
詳解參考點擊 Nginx正向代理與反向代理

Nginx在做反向代理時,提供性能穩定,並且能夠提供配置靈活的轉發功能。
Nginx可以根據不同的正則匹配,採取不同的轉發策略,比如圖片文件結尾的走文件伺服器,動態頁面走web伺服器,只要你正則寫的沒問題,又有相對應的伺服器解決方案,你就可以隨心所欲的玩。
並且Nginx對返回結果進行錯誤頁跳轉,異常判斷等。如果被分發的伺服器存在異常,他可以將請求重新轉發給另外一台伺服器,然後自動去除異常伺服器。

如果你的nginx伺服器給2台web伺服器做代理,負載均衡演算法採用輪詢,那麼當你的一台機器web程序iis關閉,也就是說web不能訪問,那麼nginx伺服器分發請求還是會給這台不能訪問的web伺服器,如果這里的響應連接時間過長,就會導致客戶端的頁面一直在等待響應,對用戶來說體驗就打打折扣,這里我們怎麼避免這樣的情況發生呢。這里我配張圖來說明下問題。

如果負載均衡中其中web2發生這樣的情況,nginx首先會去web1請求,但是nginx在配置不當的情況下會繼續分發請求道web2,然後等待web2響應,直到我們的響應時間超時,才會把請求重新分發給web1,這里的響應時間如果過長,用戶等待的時間就會越長。

下面的配置是解決方案之一:

如果使用upstream指令配置了一組伺服器作為被代理伺服器,伺服器中的訪問演算法遵循配置的負載均衡規則,同時可以使用該指令配置在發生哪些異常情況時,將請求順次交由下一組伺服器處理。

狀態值可以是:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

Nginx提供的負載均衡策略有2種:內置策略和擴展策略。
內置策略: 1.輪詢;2.加權輪詢;3.Ip hash;
擴展策略: 就天馬行空,只有你想不到的沒有他做不到的啦,你可以參照所有的負載均衡演算法,給他一一找出來做下實現。

Ip hash演算法,對客戶端請求的ip進行hash操作,然後根據hash結果將同一個客戶端ip的請求分發給同一台伺服器進行處理,可以解決session不共享的問題。

eg:

開啟簡單的緩存配置,只需要兩個指令:proxy_cache_path和proxy_cache。
proxy_cache_path: 配置緩存的存放地址和其他的一些常用配置;
proxy_cache:指令是為了啟動緩存;

相關配置說明:

該指令用於定義滿足條件的響應不會被保存到緩存中。在條件字元串中至少有一個條件不為空或者0,符合這樣條件的響應才不會被緩存。
舉例如下

其中,cookie_nocache、arg_nocache...皆為變數,可以根據你訪問的匹配策略來設置,其值只有2類,0和非0;

訪問匹配策略例如:

如果在此鏈式配置中,只要有一個值不為0,則不會cache;例如:

則不會被cache.

註:一般會配合proxy_cache_bypass共同使用;

該指令用於定義哪些情況不從cache讀取,直接從backend獲取資源;配置方式同proxy_no_cache。

給緩存數據定義一個鍵,例如

該指令用於設置緩存哪些HTTP方法,默認緩存HTTP GET/HEAD方法,不緩存HTTP POST 方法.。

設置不同響應碼的緩存時間,當不指定響應碼的時候,例如

只對響應碼為200,301,302的訪問請求資源設置緩存時間,此外可以個性化定製,例如:

此外,還可以在相應header里設置優先順序更高的緩存有效時間:

不緩存包含在field的響應header,可以設置的值有:「X-Accel-Redirect」, 「X-Accel-Expires」, 「X-Accel-Limit-Rate」,「X-Accel-Buffering」, 「X-Accel-Charset」, 「Expires」, 「Cache-Control」, 「Set-Cookie」 (0.8.44), and 「Vary」。
如果上述的header field沒有設置為忽略,則header filed中有「X-Accel-Expires」, 「Expires」, 「Cache-Control」, 「Set-Cookie」, and 「Vary」的話,響應會被緩存。

該指令用於設置緩存的最小使用次數,默認值為1

源站有問題時,nginx可以通過proxy_cache_use_stale指令開啟容錯能力,即使用緩存內容來響應客戶端的請求。舉例如下:

如上配置表示,當作為cache的NGINX收到源站返回error、timeout或者其他指定的5XX錯誤,並且在其緩存中有請求文件的陳舊版本,則會將這些陳舊版本的文件而不是錯誤信息發送給客戶端。

使用NGINX,不需要建立一個RAID(磁碟陣列)。如果有多個硬碟,NGINX可以用來在多個硬碟之間分割緩存。舉例如下:

在這份配置中,使用了3個獨立的緩存,每個緩存專用一塊硬碟,另外,3個獨立的線程池也各自專用一塊硬碟。

緩存之間(其結果就是磁碟之間)的負載均衡使用split_clients模塊,split_clients非常適用於這個任務。
在 proxy_cache_path指令中設置 use_temp_path=off ,表示NGINX會將臨時文件保存在緩存數據的同一目錄中。這是為了避免在更新緩存時,磁碟之間互相復制響應數據。

通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息;
通過錯誤日誌,你可以得到系統某個服務或server的性能瓶頸等。
因此,將日誌好好利用,你可以得到很多有價值的信息。

打開nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf
日誌部分內容:
#access_log logs/access.log main;
日誌生成的到Nginx根目錄logs/access.log文件,默認使用「main」日誌格式,也可以自定義格式。
默認「main」日誌格式:

參數明細表:

查看日誌命令tail -f /usr/local/nginx/logs/access.log

打開nginx.conf配置文件去掉#注釋見下圖:

自定義某一個server配置的日誌,使用「main」日誌格式。

日誌生成的到Nginx根目錄logs/access.log文件,默認使用「main」日誌格式,也可以自定義格式。

重新讀取載入Nginx配置文件:

執行命令:nginx-s reload

網上一位老師寫的log文件分解的腳本

此腳本執行時間根據自己公司情況來定,可以設置默認一天執行一次;

創建crontab設置作業

設置日誌文件存放目錄crontab -e

*/1 * * * * sh /usr/local/software/nginx/nginx_log.sh
此設置的為一分鍾,如果設置一天自行修改;

默認的 nginx 配置文件 nginx.conf 內容如下

示例

幾個常見配置項:

注意:

驚群現象:一個網路連接到來,多個睡眠的進程被同事叫醒,但只有一個進程能獲得鏈接,這樣會影響系統性能
每個指令必須有分號結束。

進入安裝目錄下的sbin

❹ nginx如何使用

使用nginx+php一鍵安裝包phpfind或phpstudy,超級方便,純中文綠色解壓即可。自動配好php+nginx。帶控制面板的。phpfind大小隻有16m

❺ linux如何使用nginx啟動怎麼使用

你好,啟動方法如下:
執行命令: ps -A | grep nginx
如果返回結果的話,說明有nginx在運行,服務已經啟動

❻ 如何安裝nginx

方法/步驟
1
安裝nginx前,我們首先要確保系統安裝了g++、gcc、openssl-devel、pcre-devel和zlib-devel軟體,可通過如圖所示命令進行檢測,如果以安裝我們可以通過圖二所示卸載

2
我們一般安裝linux軟體都會在/usr/local目錄下,然後進行解壓編譯安裝,具體的命令大家請看圖片所示

3
等待配置和編譯完成,完成後我們就需要配置防火牆,不攔截80埠,設置完成後需要重啟防火牆

4
接下來介紹下啟動/停止/重啟的具體方法,進入目錄後我們可以用執行sbin/nginx來啟動,也可以通過conf/nginx.conf來啟動,停止我們可以查詢進程使用kill -9 進程號/pkill -9 nginx來結束nginx服務,重啟可以通過 sbin/nginx -s reload來重啟,具體命令大家請看如圖所示

5
下面來說說基本的操作命令,
nginx -h #幫助
nginx -v #顯示版本
nginx -V #顯示版本和配置信息
nginx -t #測試配置
nginx -q #測試配置時,只輸出錯誤信息
nginx -s stop #停止伺服器
nginx -s reload #重新載入配置
然後請看圖片所示conf文件的配置,來配置nginx的方法

6
好了,這個就完成了,大家看看我的效果吧

❼ 如何安裝nginx

nginx
windows版
v1.13.3免費版http://www.ddooo.com/softdown/29113.htm
nginx
windows安裝配置方法
第一步、安裝方法
一、下載好後,把nginx
windows版軟體解壓到c盤根目錄。
二、雙擊nginx.exe圖標,可見黑窗口一閃而過,啟動完畢。
三、按下win+R快捷鍵,輸入cmd打開命令行。
四、命令行到nginx目錄,輸入nginx啟動。(注,此方式命令行窗口無任何提示,且被鎖定)
五、打開瀏覽器,輸入http://127.0.0.1,如果看到下圖片則安裝成功。
六、以後啟動軟體直接雙擊圖標即可。
七、啟動後,默認情況下(無修改配置),可見到有兩個nginx的進程,一個是master
process,一個是worker
processes測試。
第二步、配置方法
配置目標:能正常運行PHP腳本程序
大部分情況下,我們需要修改的配置文件只有一個,那就是nginx.conf,該文件位於conf目錄下。具體配置項目為:
1.
server_tokens
off;
出於安全方面的考慮,最好是隱藏nginx版本號信息
2.
listen
8088;
8088為監聽埠,根據需要可以填寫其它埠號
3.
server_name
localhost;
localhost為伺服器訪問名稱,也就是我們在瀏覽器里輸入的那個url地址
4.
charset
utf-8;
字元集編碼
5.
工作目錄
將如下配置
修改為:
root
定義了工作空間,也就是我們php項目所在的目錄。
加入index.php是為了讓nginx能夠識別php腳本,否則,在訪問php文件時,會出現直接下載的情況。
6.
整合php
將location
~
\.php配置部分的注釋全部去掉,最終配置如下:
注意這裡面的$document_root變數,它對應的內容就是root參數值,如果我們沒有定義root參數或者把root注釋掉,在訪問php的時候,頁面上就會出現No
input
file
specified.提示。
7.
啟動php-cgi
打開cmd命令窗口,切換到php的安裝目錄,執行php-cgi
-b
127.0.0.1:9000,即可啟動php-cgi,啟動完成後,cmd窗口切勿關閉,否則php-cgi也會被關掉的。
特別提醒:只有在開啟php-cgi的情況下,nginx才能正常訪問php。
8.
重啟nginx
打開cmd命令窗口,切換到nginx所在目錄,執行nginx
-s
reload即可重啟nginx。其它相關nginx相關命令如下:
啟動:start
nginx
停止:nginx
-s
stop
退出:nginx
-s
quit

❽ nginx重啟幾種方法

平滑重啟命令:
kill -HUP 住進稱號或進程號文件路徑
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件後最好先檢查一下修改過的配置文件是否正 確,以免重啟後Nginx出現錯誤影響伺服器穩定運行。
判斷Nginx配置是否正確命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
nginx reload重啟
執行
# /usr/local/nginx/sbin/nginx -s reload
nginx已經重啟成功
Centos nginx重啟
重啟Nginx
service nginx restart
/etc/init.d/nginx stop
/etc/init.d/nginx start
Ubuntu Nginx
$sudo service nginx start
$sudo service nginx stop
win7
啟動
解壓至c:\nginx,運行nginx.exe(即nginx -c conf\nginx.conf),默認使用80埠,日誌見文件夾C:\nginx\logs
常用配置
C:\nginx\conf\nginx.conf,使用自己定義的conf文件如my.conf,命令為nginx -c conf\my.conf

❾ nginx啟動命令和停止命令

Nginx是一種免費的,開源的,高性能HTTP和反向代理伺服器,負責處理Internet上一些最大站點的負載。
它可以用作獨立的Web伺服器,也可以用作Apache和其他Web伺服器的反向代理。
如果您是開發人員或系統管理員,則很可能會定期與Nginx打交道。使用NginxWeb伺服器時,啟動,停止以及重新啟動/重新載入是最常見的任務。今天我們將說明如何在Linux伺服器上啟動,停止和重新啟動Nginx。
先決條件:
訪問終端窗口或命令行
具有sudo或root特權的用戶帳戶
與遠程系統的現有SSH連接(如果您正在遠程工作)停止Nginx服務的四種方法。

❿ CentOS7中使用yum安裝Nginx的方法

1、添加源

Nginx官網提供了Centos的源地址。執行命令添加源:

2、安裝Nginx

通過yum search nginx看看是否已經添加源成功。如果成功則執行下列命令安裝Nginx。

3、啟動Nginx並設置開機自動運行

結束----就這么簡單

閱讀全文

與nginx使用方法相關的資料

熱點內容
腰間盤如何鍛煉方法 瀏覽:608
過河的簡單方法 瀏覽:586
傳播研究方法教材 瀏覽:281
骨科治療腱鞘炎的方法 瀏覽:595
電腦突破網路限速的方法 瀏覽:158
溶液中鋰離子濃度檢測方法 瀏覽:161
紅杉樹樹皮的食用方法 瀏覽:732
剔除離散值計算方法 瀏覽:621
seo有哪些重要的方法 瀏覽:738
阻止電瓶車上樓線路安裝方法 瀏覽:31
古代陶瓷快速降溫的方法 瀏覽:413
什麼方法能快速開車 瀏覽:69
嬰兒吐奶用什麼方法解決 瀏覽:737
水泥牆石材背景牆安裝方法 瀏覽:446
兩相電機如何調整接線方法 瀏覽:48
老式塑料管連接方法 瀏覽:516
城市宣傳欄的測量方法 瀏覽:766
玻璃推拉門地滑軌道安裝方法 瀏覽:984
去狗皮的正確方法 瀏覽:521
狀態粉使用方法 瀏覽:22