不敢相信,Nginx 還能這么玩?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
或許你會想:“Nginx 不就是用來部署網站的服務器嘛?這有何難?” 但其實這不過是九牛一毛罷了,Nginx 的實用操作和使用技巧還多著呢,下面這篇文章,就帶大家輕松入門 Nginx、并且循序漸進地學習 Nginx 真正的用法! 推薦觀看本文對應的視頻版本,有更多操作演示哦:https://bilibili.com/video/BV1TW1LYkE59 一、Nginx 入門 - 牛刀小試首先要了解什么是 Nginx?注意讀音,是 Engine X,而不是恩靜因克斯。 根據官方定義,它是世界上最受歡迎的 Web 服務器、高性能負載均衡器、反向代理、API 網關和內容緩存。 雖然聽不懂,但是感覺很厲害的樣子。
簡單來說,Nginx 不僅能部署網站,而且相比其他的 Web 服務器,它能夠用更少的資源,同時處理更多用戶的請求,讓網站速度更快更穩定,這也是企業選擇 Nginx 的原因。 下面我們就牛刀小試,用 Nginx 啟動一個網站!
1、Nginx 安裝首先我們需要安裝 Nginx ,先到官網中根據操作系統下載一個穩定版本的壓縮包,下載完成之后解壓一下。
如果是 Windows 系統,雙擊 exe 文件啟動即可;如果是 Mac 或 Linux 系統,可以打開終端并進入該目錄,手動編譯安裝后執行 Nginx 命令啟動。
當然也可以使用第三方的包管理工具,比如 Chocolatey(Windows)、Homebrew(Mac)、Yum(Linux)。 或者使用現成的服務器運維面板,比如寶塔 Linux,可以傻瓜式一鍵安裝:
2、修改網頁文件啟動成功后,我們訪問本機域名
那如果想自己修改網頁內容,怎么辦呢? 我們要找到 Nginx 的大腦,也就是配置文件。進入配置目錄
我們找到這個 index.html 文件,修改網頁的內容并保存:
重新訪問就可以看到效果啦!
看到這里,恭喜你,已經超過 30% 的程序員了!
二、Nginx 常用操作 - 明勁下面,我們要成為 Nginx 明勁武者。所謂明勁,就是要熟悉 Nginx 的基本配置和常用操作,能夠滿足企業開發中的大多數需求,如果你的目標是開發崗,那么學完下面這些就足夠找工作了。 1、靜態文件服務我們開發好的網站,通常包含像 HTML、CSS、JavaScript、圖片等文件,由于這些文件的內容在存儲時是固定的,被稱為靜態文件。 如果你要讓別人訪問到開發好的網站,只把網站文件放到服務器上還是不夠的,還需要一個 Web 服務器,能夠接受用戶的訪問請求,并找到對應位置的文件進行響應。 Nginx 最基本的功能,就是作為 Web 服務器提供靜態文件服務。 打開 Nginx 的配置文件 server { 保存配置,然后執行
企業項目中,需要為特定路徑定義不同的處理規則,location 塊的配置會更復雜。支持根據請求路徑的特定部分、正則表達式等進行匹配,比如到特定目錄去尋找圖片: server {
2、反向代理Nginx 的另一個常用功能是用作反向代理服務器。什么是反向代理呢?一句話:Nginx 作為中介,幫后端服務器接受請求。
反向代理有什么作用呢? 首先是請求轉發和解決跨域。比如在 location 塊中添加 proxy_pass 配置,可以將 Nginx 在 80 端口收到的 /api 路徑的請求轉發到本地 8080 端口的后端服務。 server { 這樣就隱藏了后端服務器的 IP 地址,讓客戶端完全感知不到后端服務器的存在,更加安全。
而且還能讓前端和后端的域名統一,解決了跨域問題。
反向代理還可以用于實現負載均衡。由于企業項目的流量巨大,通常需要有多臺后端服務器。Nginx 可以作為高性能網關,統一接收請求,并將請求按照特定規則轉發到不同的后端服務器進行處理,從而分散了請求壓力,避免單一服務器過載。
在 Nginx 中實現負載均衡非常簡單,首先通過 upstream 塊定義了一個名為 backend 的服務器組,其中包含兩個后端服務器,然后通過反向代理配置將請求轉發到這個服務器組即可: upstream backend { 這樣每次都訪問同一個地址,會交替返回兩種不同的內容,這是因為 Nginx 的默認負載均衡算法是輪詢,請求會被平均轉發到兩個不同的服務進行處理。 反向代理還有更多的作用,比如緩存常見請求的響應、減少后端負擔,集中處理 SSL 加密、認證和日志記錄等功能,后面會依次講解。
3、改寫請求和響應第三個 Nginx 的常用功能是改寫請求和響應。在請求到達服務器或響應返回給客戶端之前,Nginx 可以對其進行修改。 改寫請求與響應有什么作用呢?有幾個比較典型的場景: 1)控制瀏覽器緩存首先,設置響應頭 可以幫助我們控制瀏覽器緩存。通過 Nginx 的 location /images/ { 這樣,當用戶訪問圖片時,瀏覽器會在本地緩存這些圖片,下次訪問時就不用訪問服務器了,提高速度并減少對服務器的請求。
2)重定向請求重定向允許我們將請求從一個地址自動引導到另一個地址,常見的應用場景包括將 HTTP 請求重定向到 HTTPS,或者將舊地址重定向到新地址。 在 Nginx 中,可以使用 location /old-page { 當用戶訪問某個過期頁面時,會被重定向自動跳轉到新網站。
3)URI 重寫比重定向更高級一些,Nginx 提供了 location /api/v1/ { 這樣一來,后端就不用再關注
看到這里,恭喜你,超過 60% 的程序員了。
三、Nginx 高級操作 - 暗勁下面,我們要成為 Nginx 的暗勁高手。所謂暗勁,又分為 2 種境界。
暗勁境界的高手,挑戰大廠開發、架構師、高級系統管理員崗位,不成問題。
1、Nginx 高級配置我們先挑戰小圓滿,Nginx 的配置項實在是太多了,這里我就挑選幾個相對實用的來講解。 1)日志記錄為了分析網站流量、用戶行為和報錯信息,我們可以開啟 Nginx 日志功能。分為訪問日志和錯誤日志。 訪問日志會記錄所有請求的信息,更全面,可以通過修改 access_log 指令調整日志存儲路徑: http { 而錯誤日志僅記錄 Nginx 在處理請求時遇到的問題,錯誤又分為 8 個級別:
可以為不同的級別指定不同的日志輸出路徑: access_log /rap/access.log custom_format; # 配置訪問日志 開啟日志功能后,就能直接在文件中查看日志了。
2)訪問控制如果有惡意用戶攻擊我們的網站,怎么辦? 莫慌,Nginx 提供了訪問控制功能,可以使用 server { 這樣一來,攻擊者就訪問不了網站了!
3)限流為了保護網站,我們還可以使用 Nginx 的限流功能。比如下面這段配置,通過定義請求限流區域并應用于根路徑,限制每個 IP 地址在一分鐘內最多只能發送 2 個請求。 # 定義限流區域,使用客戶端的二進制 IP 地址作為唯一標識 這樣后端服務就不被流量激增影響,能夠提高系統的穩定性。 4)虛擬主機在企業開發中,我們為了節省成本,經常會在同一臺服務器上部署多個網站項目,這時就需要使用 Nginx 的虛擬主機功能了。 每個網站通常就是一個虛擬主機,會有一個 server_name 名稱對應訪問網站的域名,比如我這里配置 2 臺虛擬主機: # 虛擬主機1 配置虛擬主機后,Nginx 就能夠根據請求的域名找到對應的網站配置,并處理請求。
5)其他除了上面這些,還有很多企業開發中可能會用到的 Nginx 高級配置和技巧。 比如可以:
此外,Nginx 支持 WebSocket、HTTPS 和 HTTP/2 等多種協議,還可以配置 Gzip 壓縮來減少傳輸的數據量,進一步優化性能。 最后,Nginx 自身也支持一系列性能調優的配置,比如工作進程與連接數配置,可以從容應對高并發和大流量場景。 worker_processes auto; # 自動檢測 CPU 核心數,設置工作進程數
2、Nginx 工具和模塊生態想成為 Nginx 大圓滿高手,就要懂得利用工具和生態,比如可視化工具、模塊和開源項目。 首先,Nginx 的配置和運維對初學者來說可能比較復雜,這時可以利用 Nginx 官方推出的 Nginx Amplify、輕量級的 Nginx-UI 或者寶塔 Linux 服務器管理面板等可視化工具,通過圖形界面來更直觀地查看配置、分析流量和性能指標,從而提高操作和運維效率。
其次,Nginx 的功能并不是一成不變的,我們可以通過各種各樣的模塊來擴展它的能力,比如我們常用于健康檢查的 nginx_upstream_check_module 模塊、實現 JavaScript 語言擴展的 njs 模塊。 但手動安裝模塊的過程是比較繁瑣的,需要下載源碼并進行編譯。 這種情況下,我們就可以選擇 OpenResty 這樣一個基于 Nginx 的高性能 Web 平臺,它集成了大量模塊、依賴項和 Lua 腳本庫,能夠讓你直接在 Nginx 里開發復雜的業務邏輯,充分利用 Nginx 的非阻塞 I/O 模型來提升應用的性能,適合超高并發的場景。 比如下圖是網上的一個基于 OpenResty 實現的灰度發布架構:
轉自https://www.cnblogs.com/yupi/p/18519885 該文章在 2025/1/20 10:08:47 編輯過 |
關鍵字查詢
相關文章
正在查詢... |