nginx 是一個高效能的 http 和反向代理伺服器,以高穩定性、豐富的功能集、範例設定檔和低系統資源的消耗而聞名。
nginx 特點 處理靜態文件,索引文件以及自動索引;開啟文件描述符緩衝.無快取的反向代理加速,簡單的負載平衡與容錯. fastcgi,簡單的負載平衡和容錯.模組化的結構。包括 gzipping, byte ranges, chunked responses,以及 ssi-filter 等 filter。如果由 fastcgi 或其它代理伺服器處理單頁中存在的多個 ssi,則這項處理可以並行運行,而不需要相互等待。支援 ssl 和 tlssni.主要應用場合 1、靜態 http 伺服器
首先,nginx是 http 伺服器,可以將伺服器上的靜態檔案(如 html、圖片)透過 http 協定展現給客戶端。
設定:
server { listen 80; # 端口号 location / { root /usr/share/nginx/html; # 静态文件路径 } }
2、反向代理伺服器
什麼是反向代理?
客戶端本來可以直接透過http 協定存取某網站應用程式伺服器,如果網站管理員在中間加上一個nginx,客戶端請求nginx,nginx 請求應用程式伺服器,然後將結果傳回給客戶端,此時nginx 就是反向代理伺服器。
設定:
server { listen 80; location / { proxy_pass http://192.168.20.1:8080; # 应用服务器http地址 } }
既然伺服器可以直接 http 訪問,為什麼要在中間加上一個反向代理,不是多此一舉嗎?反向代理有什麼作用?繼續往下看,下面的負載平衡、虛擬主機,都基於反向代理實現,當然反向代理的功能也不只是這些。
3、負載平衡
當網站訪問量非常大,網站站長開心賺錢的同時,也攤上事兒了。因為網站越來越慢,一台伺服器已經不夠用了。於是將相同的應用程式部署在多台伺服器上,將大量使用者的請求分配給多台機器處理。同時帶來的好處是,其中一台伺服器萬一掛了,只要還有其他伺服器正常運行,就不會影響用戶使用。
當我們網站進行大的升級更新時,我們不可能直接將所有的伺服器都關掉,然後再升級的。通常我們都是批量的關掉一些伺服器,去升級網站,當有用戶的請求時則分配給其他還在運作的機器處理。當之前關掉的機器更新完成後,再次開啟,然後批量關掉部分機器,如上循環,直到最後全部機器都更新完成。這樣就不會影響使用者使用。
nginx 可以透過反向代理來實現負載平衡。
設定:
upstream myapp { server 192.168.20.1:8080; # 应用服务器1 server 192.168.20.2:8080; # 应用服务器2 } server { listen 80; location / { proxy_pass http://myapp; } }
4、虛擬主機
網站存取量大,需要負載平衡。然而並不是所有網站都如此出色,有的網站,由於訪問量太小,需要節省成本,將多個網站部署在同一台伺服器上。
例如將www.aaa.com 和www.bbb.com 兩個網站部署在同一台伺服器上,兩個網域解析到同一個ip 位址,但使用者透過兩個網域卻可以開啟兩個完全不同的網站,互相不影響,就像訪問兩個伺服器一樣,所以叫兩個虛擬主機。
配置:
server { listen 80 default_server; server_name _; return 444; # 过滤其他域名的请求,返回444状态码 } server { listen 80; server_name www.aaa.com; # www.aaa.com域名 location / { proxy_pass http://localhost:8080; # 对应端口号8080 } } server { listen 80; server_name www.bbb.com; # www.bbb.com域名 location / { proxy_pass http://localhost:8081; # 对应端口号8081 } }
在伺服器 8080 和 8081 兩個連接埠分別開了一個應用,客戶端透過不同的網域訪問,根據 server_name 可以反向代理到對應的應用伺服器。
虛擬主機的原理是透過 http 請求頭中的 host 是否符合 server_name 來實現的,有興趣的同學可以研究一下 http 協定。
另外,server_name 設定還可以過濾有人惡意將某些網域指向你的主機伺服器。
5、fastcgi
nginx 本身不支援 php 等語言,但它可以透過 fastcgi 來將請求丟給某些語言或框架處理(例如 php、python、perl)。
server { listen 80; location ~ \.php$ { include fastcgi_params; fastcgi_param script_filename /php文件路径$fastcgi_script_name; # php文件路径 fastcgi_pass 127.0.0.1:9000; # php-fpm地址和端口号 # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock; } }
設定中將 .php 結尾的請求透過 fashcgi 交給 php-fpm 處理,php-fpm 是 php 的一個 fastcgi 管理器。有關fashcgi 可以查閱其他資料,本文不再介紹。
fastcgi_pass 和 proxy_pass 有什麼不同?下面一張圖帶你看明白:
以上是Nginx基礎知識入門實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX適合處理高並發請求,Apache適合需要復雜配置和功能擴展的場景。 1.NGINX採用事件驅動、非阻塞架構,適用於高並發環境。 2.Apache採用進程或線程模型,提供豐富的模塊生態系統,適合複雜配置需求。

NGINX可用於提升網站性能、安全性和可擴展性。 1)作為反向代理和負載均衡器,NGINX可優化後端服務和分擔流量。 2)通過事件驅動和異步架構,NGINX高效處理高並發連接。 3)配置文件允許靈活定義規則,如靜態文件服務和負載均衡。 4)優化建議包括啟用Gzip壓縮、使用緩存和調整worker進程。

NGINXUnit支持多種編程語言,通過模塊化設計實現。 1.加載語言模塊:根據配置文件加載相應模塊。 2.應用啟動:調用語言運行時執行應用代碼。 3.請求處理:將請求轉發給應用實例。 4.響應返回:將處理後的響應返回給客戶端。

NGINX和Apache各有優劣,適合不同場景。 1.NGINX適合高並發和低資源消耗場景。 2.Apache適合需要復雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務器軟件。

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

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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

記事本++7.3.1
好用且免費的程式碼編輯器