首頁 運維 Nginx Nginx快速入門執行個體分析

Nginx快速入門執行個體分析

May 14, 2023 pm 12:19 PM
nginx

為什麼要用nginx?

目前 nginx 的主力競爭對手莫過於 apache ,在這裡小編對兩者做一個簡單的對比,幫助大家更好的理解 nginx 的優勢。

1、作為web 伺服器:

相比apache,nginx 使用更少的資源,支援更多的並發連接,體現更高的效率,這一點使nginx 尤其受到虛擬主機提供者的歡迎。在高連線並發的情況下,nginx是apache伺服器不錯的替代品: nginx在美國是做虛擬主機生意的老闆們經常選擇的軟體平台之一,能夠支援高達50000 個並發連線數的回應, 感謝nginx 為我們選擇了epoll and kqueue 作為開發模型。

nginx作為負載平衡伺服器: nginx 既可以在內部直接支援 rails 和 php 程式對外進行服務, 也可以支援作為 http代理 伺服器對外進行服務。 nginx採用c進行編寫, 不論是系統資源開銷還是cpu使用效率都比 perlbal 好很多。

2、nginx 配置簡潔, apache 複雜:

nginx 啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數月也不需要重新啟動. 你還能夠在不間斷服務的情況下進行軟體版本的升級。

nginx 靜態處理效能比 apache 高 3倍以上,apache 對 php 支援比較簡單,nginx 需要配合其他後端來使用 ,apache 的元件比 nginx 多。

3、最核心的差異在於:

apache是​​同步多進程模型,一個連線對應一個行程;nginx是異步的,多個連線(萬級)可以對應一個進程。

4、兩者的擅長領域分別是:

nginx的優點是處理靜態請求,cpu記憶體使用率低,apache適合處理動態請求,所以現在一般前端用nginx作為反向代理抗住壓力,apache作為後端處理動態請求。

nginx 基本使用方法

系統平台:centos release 6.6 (final) 64位元。

一、安裝編譯工具及函式庫檔案

Nginx快速入門執行個體分析

#二、首先要安裝pcre

Nginx快速入門執行個體分析

Nginx快速入門執行個體分析##1、pcre 作用是讓nginx 支援rewrite 功能。下載pcre 安裝包,下載位址: 

 

Nginx快速入門執行個體分析

2、解壓縮安裝套件:

Nginx快速入門執行個體分析

3、進入安裝套件目錄

Nginx快速入門執行個體分析

4、編譯安裝

Nginx快速入門執行個體分析

Nginx快速入門執行個體分析5、檢視pcre版本

 

Nginx快速入門執行個體分析三、安裝nginx

Nginx快速入門執行個體分析1、下載nginx,下載位址:

Nginx快速入門執行個體分析

 

2、解壓縮安裝套件

Nginx快速入門執行個體分析

3、進入安裝套件目錄

Nginx快速入門執行個體分析

4、編譯安裝

Nginx快速入門執行個體分析

Nginx快速入門執行個體分析5、檢視nginx版本

 

到此,nginx安裝完成。

Nginx快速入門執行個體分析四、nginx 設定

建立nginx 運行使用的使用者www:

Nginx快速入門執行個體分析

##設定nginx.conf ,將/usr/local/webserver/nginx/conf/nginx.conf取代為以下內容

#############檢查設定檔ngnix.conf的正確性指令:###

Nginx快速入門執行個體分析

Nginx快速入門執行個體分析 

五、啟動nginx

nginx 啟動指令如下:

Nginx快速入門執行個體分析

Nginx快速入門執行個體分析

六、造訪網站

從瀏覽器造訪我們設定的網站ip:

Nginx快速入門執行個體分析

#nginx 常用指令說明

1. main 全域設定

nginx在運行時與特定業務功能(例如http服務或email服務代理)無關的一些參數,例如工作進程數,運行的身份等。

woker_processes 2
在設定檔的頂級main部分,worker角色的工作進程的個數,master進程是接收並指派請求給worker處理。這個數值簡單一點可以設定為cpu的核數grep ^processor /proc/cpuinfo | wc -l,也是auto 值,如果開啟了ssl和gzip更應該設定成與邏輯cpu數量一樣甚至為2倍,可以減少i /o操作。如果nginx伺服器還有其它服務,可以考慮適當減少。

 worker_cpu_affinity
也是寫在main部分。在高並發情況下,透過設定cpu黏性來降低多cpu核切換造成的暫存器等現場重建所帶來的效能損耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核心)。

worker_connections 2048
寫在events部分。每一個worker進程能並發處理(發起)的最大連線數(包含與客戶端或後端被代理伺服器間等所有連線數)。 nginx作為反向代理伺服器,計算公式 最大連線數 = worker_processes * worker_connections/4,所以這裡客戶端最大連線數是1024,這可以增加到8192都沒關係,看情況而定,但不能超過後面的worker_rlimit_nofile。當nginx作為http伺服器時,計算公式裡面是除以2。

worker_rlimit_nofile 10240
寫在main部分。預設是沒有設置,可以限制為作業系統最大的限制65535。

 use epoll
寫在events部分。在linux作業系統下,nginx預設使用epoll事件模型,得益於此,nginx在linux作業系統下效率相當高。同時nginx在openbsd或freebsd作業系統上採用類似epoll的高效事件模型kqueue。在作業系統不支援這些高效能模型時才使用select。

2. http伺服器

與提供http服務相關的一些設定參數。例如:是否使用keepalive啊,是否使用gzip進行壓縮等。

sendfile on
開啟高效率文件傳輸模式,sendfile指令指定nginx是否呼叫sendfile函數來輸出文件,減少用戶空間到核心空間的上下文切換。對於普通應用程式設為 on,如果用來進行下載等應用磁碟io重負載應用,可設定為off,以平衡磁碟與網路i/o處理速度,降低系統的負載。

 keepalive_timeout 65 : 長連線逾時時間,單位是秒,這個參數很敏感,涉及瀏覽器的種類、後端伺服器的逾時設定、作業系統的設置,可以另外起一片文章了。長連線要求大量小檔案的時候,可以減少重建連線的開銷,但假如有大檔案上傳,65s內沒上傳完成會導致失敗。如果設定時間過長,用戶多,長時間保持連線會佔用大量資源。

 send_timeout : #用於指定回應客戶端的逾時時間。這個逾時僅限於兩個連線活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx將會關閉連線。

 client_max_body_size 10m
允許客戶端請求的最大單一檔案位元組數。如果有上傳較大文件,請設定它的限制值

 client_body_buffer_size 128k
緩衝區代理緩衝用戶端請求的最大位元組數

模組http_proxy :

這個模組實現的是nginx作為反向代理伺服器的功能,包括快取功能(另見文章)

proxy_connect_timeout 60
nginx跟後端伺服器連接逾時時間(代理連線逾時)

proxy_read_timeout 60
連線成功後,與後端伺服器兩個成功的回應操作之間逾時時間(代理接收逾時)

proxy_buffer_size 4k
設定代理伺服器(nginx)從後端realserver讀取並保存用戶頭資訊的緩衝區大小,預設與proxy_buffers大小相同,其實可以將這個指令值設的小一點

proxy_buffers 4 32k
proxy_buffers緩衝區,nginx針對單一連線快取來自後端realserver的回應,網頁平均在32k以下的話,這樣設定

proxy_busy_buffers_size 64k
高負荷下緩衝大小(proxy_buffers*2)

proxy_max_temp_file_size
當proxy_buffers放不下後端伺服器的回應內容時,會將一部分儲存到硬碟的暫存檔案中,這個值用來設定最大暫存檔案大小,預設1024m ,它與proxy_cache沒有關係。大於這個值,將從upstream伺服器傳回。設定為0禁用。

proxy_temp_file_write_size 64k
當快取被代理的伺服器回應到暫存檔案時,這個選項限制每次寫暫存檔案的大小。 proxy_temp_path(可以在編譯的時候)指定寫到哪那個目錄。

proxy_pass,proxy_redirect見 location 部分。

模組http_gzip:

gzip on : 開啟gzip壓縮輸出,減少網路傳輸。

  1.  gzip_min_length 1k : 設定允許壓縮的頁面最小位元組數,頁面位元組數從header頭得content-length中取得。預設值是20。建議設定成大於1k的位元組數,小於1k可能會越壓越大。

  2. gzip_buffers 4 16k : 設定係統取得幾個單位的快取用於儲存gzip的壓縮結果資料流。 4 16k代表以16k為單位,安裝原始資料大小以16k為單位的4倍申請記憶體。

  3. gzip_http_version 1.0 : 用來辨識http 協定的版本,早期的瀏覽器不支援gzip 壓縮,使用者就會看到亂碼,所以為了支援前期版本加上了這個選項,如果你用了nginx 的反向代理並期望也啟用gzip 壓縮的話,由於末端通訊是http/1.0,故請設定為1.0。

  4. gzip_comp_level 6 : gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)

  5. gzip_types :符合mime類型進行壓縮,無論是否指定,”text/html」類型總是會被壓縮的。

  6. gzip_proxied any : nginx作為反向代理的時候啟用,決定開啟或關閉後端伺服器傳回的結果是否壓縮,符合的前提是後端伺服器必須傳回包含」via 」的header頭。

  7. gzip_vary on : 和http頭有關係,會在回應頭加個vary: accept-encoding ,可以讓前端的快取伺服器快取經過gzip壓縮的頁面,例如,用squid快取經過nginx壓縮的資料。

 3. server虛擬主機

#http服務上支援若干虛擬主機。每個虛擬主機一個對應的server設定項,設定項裡麵包含該虛擬主機相關的設定。在提供mail服務的代理程式時,也可以建立若干server。每個server透過監聽位址或連接埠來區分。

listen
監聽端口,預設80,小於1024的要以root啟動。可以為listen *:80、listen 127.0.0.1:80等形式。

server_name
伺服器名,如localhost、www.example.com,可以透過正規匹配。

模組http_stream

這個模組透過一個簡單的調度演算法來實現客戶端ip到後端伺服器的負載平衡,upstream後接負載平衡器的名字,後端realserver以 host: port options; 方式組織在{} 中。如果後端被代理的只有一台,也可以直接寫在 proxy_pass 。

4. location

http服務中,某些特定的url對應的一系列設定項。

root /var/www/html
定義伺服器的預設網站根目錄位置。如果locationurl匹配的是子目錄或文件,root沒什麼作用,一般放在server指令裡面或/下。

index index.jsp index.html index.htm
定義路徑下預設存取的檔名,一般跟著root放

proxy_pass http:/backend
請求轉向backend定義的伺服器列表,即反向代理,對應upstream負載平衡器。也可以proxy_pass http://ip:port。

proxy_redirect off;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
這四個暫且這樣設,如果深究的話,每一個都涉及到很複雜的內容,也將透過另一篇文章來解讀。

關於location匹配規則的寫法,可以說尤為關鍵且基礎的,參考文章 nginx配置location總結及rewrite規則寫法;

5. 其它

5.1 存取控制allow/deny

nginx 的存取控制模組預設就會安裝,而且寫法也非常簡單,可以分別有多個allow,deny,允許或禁止某個ip或ip段訪問,依序滿足任何一個規則就停止往下匹配。如:

Nginx快速入門執行個體分析我們也常用 httpd-devel 工具的 htpasswd 來為存取的路徑設定登入密碼:

Nginx快速入門執行個體分析

這樣就產生了預設使用crypt加密的密碼檔。打開上面nginx-status的兩行註釋,重啟nginx生效。

5.2 列出目錄 autoindex

nginx預設是不允許列出整個目錄的。如需此功能,開啟nginx.conf文件,在location,server 或http段中加入autoindex on;,另外兩個參數最好也加上去:

  1. autoindex_exact_size off; 默認為on,顯示出檔案的確切大小,單位是bytes。改為off後,顯示出檔案的大概大小,單位是kb或mb或gb autoindex_localtime on;

  2. 預設為off,顯示的檔案時間為gmt時間。改為on後,顯示的檔案時間為檔案的伺服器時間

Nginx快速入門執行個體分析

#

以上是Nginx快速入門執行個體分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

怎麼啟動nginx服務器 怎麼啟動nginx服務器 Apr 14, 2025 pm 12:27 PM

啟動 Nginx 服務器需要按照不同操作系統採取不同的步驟:Linux/Unix 系統:安裝 Nginx 軟件包(例如使用 apt-get 或 yum)。使用 systemctl 啟動 Nginx 服務(例如 sudo systemctl start nginx)。 Windows 系統:下載並安裝 Windows 二進製文件。使用 nginx.exe 可執行文件啟動 Nginx(例如 nginx.exe -c conf\nginx.conf)。無論使用哪種操作系統,您都可以通過訪問服務器 IP

See all articles