Nginx初步(反向代理/Web伺服器/輕量級)
一、Nginx是什麼:
Nginx的定義:
Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。
先來弄懂幾個定義:
(1)反向代理:
什麼是反向代理?什麼是正向代理?
反向代理隱藏真實伺服器,正向代理隱藏真實客戶端。
代理的關鍵,就是隱藏(類比於房屋代理,各種代理商,都是在買家與賣家之間的一層隔離,買家看不到真正的賣家,好像是在與代理直接做交易),隱藏真實的發出網路請求的一方。
我們常說的代理都是正向代理,正向代理隱藏真實的客戶端,由代理伺服器代替客戶端統一向伺服器傳送請求,伺服器不知道真實的客戶端是誰,伺服器只能看到客戶端的代理伺服器;
正向代理的典型應用是為在區域網內的客戶端提供訪問Internet的途徑。
反向代理隱藏的是服務端,www.baidu.com就是一個反向代理伺服器,我們向baidu傳送請求,只需要知道反向代理伺服器的IP地址即可,而它後面隱藏了成千上萬臺真實的伺服器。
(2) web伺服器:
常見的伺服器分為 web伺服器、應用伺服器。
Nginx、Apache是Web 伺服器,Tomcat是應用伺服器。
把它們的名字展開更好理解:
Web HTTP Server, Web Application Server。
如果你把web稱為“Web應用”,那麼處理web業務的伺服器就是“web應用伺服器”,用於處理業務邏輯;
而 “web伺服器”則主要是讓客戶端通過瀏覽器進行訪問,處理HTTP連線,所以是“Web HTTP Server”。
(3)輕量級:
web伺服器的重量級、輕量級指的是什麼?
一句話概括二者區別:
輕量級,就是在同等併發量時佔用更少的記憶體和資源。
之所以 Apache是重量級伺服器,而Nginx是輕量級伺服器,是因為:
Apache使用的是傳統的select網路IO模型,同步多執行緒,一個連線對應一個程式;
Nginx使用的是現代的epoll、kqueue網路IO模型,一個執行緒可以處理多個連線。
(4)靜態資源、動態資源:
簡而言之,靜態資源不需要去訪問後端資料庫,直接返回前端固定頁面即可,訪問效率高,但內容固定;動態資源需要訪問後端資料庫。
靜態資源:
可以理解為前端的固定頁面,這裡麵包含HTML、CSS、JS、圖片等等,不需要查資料庫也不需要程式處理,直接就能夠顯示的頁面,如果想修改內容則必須修改頁面,但是訪問效率相當高。
動態資源:
需要程式處理或者從資料庫中讀資料,能夠根據不同的條件在頁面顯示不同的資料,內容更新不需要修改頁面但是訪問速度不及靜態頁面。
(5)Apache、Nginx、Tomcat 比較:
Nginx: 負載均衡、反向代理、處理靜態檔案(速度高於Apache三倍以上);
Apache: 相對於Tomcat處理靜態檔案是它的優勢;
Tomcat: 處理動態檔案的HTTP請求;
真實開發中,一般採用的架構是 Nginx + Tomcat。
- Nginx處理高併發的HTTP請求時效能有多優秀:
(1)高併發:Nginx單機支援10W以上的連線,支援上限取決於記憶體,10W遠未封頂;
(2)低記憶體消耗:1W個非活躍的HTTP Keep-Alive連線在Nginx中僅消耗2.5M記憶體,這是Nginx支援高併發的基礎。
2. Nginx的安裝:
(1)準備工作:
Linux 2.6以上核心
(支援 epoll)、GCC編譯器
(編譯 Nginx 原始碼)、PCRE庫
(支援 nginx.conf 配置檔案中使用的正規表示式)、zlib庫
(伺服器給客戶端傳送 HTTP 資料時進行壓縮)、OpenSSL
(支援 HTTPS 安全傳輸)。
(2)Linux核心引數優化:
fs.file-max = 999999
net.ipv4.tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout
net.ipv4.tcp_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog
net.ipv4.ip_local_port_range = 1024 61000
net.ipv4.tcp_rmem = 4096 32768 262142
net.ipv4.tcp_wmem = 4096 32768 262142
net.ipv4.netdev_max_backlog
net.ipv4.rmem_default
net.ipv4.wmem_default
net.ipv4.rmem_max
net.ipv4.wmem_max
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn.backlog
(3)編譯安裝:
下載、解壓Nginx原始碼後:
./configure
make
make install
./configure做了大量的幕後工作,包括檢測作業系統核心和已安裝的軟體、解析引數、生成中間目錄、根據各種引數生成C原始檔、生成Makefile檔案;
make 命令編譯上一步生成的Makefile檔案,生成目標檔案、二進位制檔案;
make install 命令根據第一步configure中的引數將Nginx部署起來。
(4)啟動與關閉Nginx:
//啟動:
cd /usr/local/sbin
./nginx
//關閉:
./nginx -s stop
或者
./nginx -s quit
參考連結:
反向代理為何叫反向代理
淺談Tomcat、Apache、Nginx的區別及優缺點
死磕Nginx系列 – Nginx入門
動態資源和靜態資源區別
相關文章
- Nginx搭建反向代理負載均衡和web快取伺服器Nginx負載Web快取伺服器
- Nginx反向代理Nginx
- nginx 反向代理Nginx
- nginx正向代理、反向代理Nginx
- Nginx負載均衡反向代理伺服器Nginx負載伺服器
- nginx配置web服務|反向代理|負載均衡NginxWeb負載
- Nginx 配置反向代理Nginx
- Nginx 配置:反向代理Nginx
- Nginx正向代理和反向代理配置Nginx
- Nginx之路--配置正向代理、反向代理Nginx
- Nginx四層反向代理Nginx
- tomcat 配置nginx 反向代理TomcatNginx
- nginx 反向代理 swoole 使用Nginx
- nginx: 高效能http和反向代理伺服器NginxHTTP伺服器
- 使用 express 輕鬆實現反向代理伺服器Express伺服器
- web前端跨域解決方案JSONP,CORS,NGINX反向代理Web前端跨域JSONCORSNginx
- NGINX伺服器有什麼作用?什麼叫反向代理?為什麼要使用反向代理?Nginx伺服器
- Nginx伺服器的使用與反向代理負載均衡Nginx伺服器負載
- 通過docker-compose搭建 Nginx 反向代理伺服器DockerNginx伺服器
- 淺談Nginx之反向代理Nginx
- nginx反向代理快取教程。Nginx快取
- nginx反向代理配置去除字首Nginx
- nginx 反向代理 介面請求Nginx
- 反向代理學習筆記(一) Nginx與反向代理緒論筆記Nginx
- Nginx反向代理實現跨域Nginx跨域
- yapi 的 nginx 反向代理配置文字APINginx
- nginx大道至簡之反向代理Nginx
- nginx 學習之反向代理(1)Nginx
- Nginx proxy manager反向代理docker hubNginxDocker
- nginx反向代理配置如何去除字首Nginx
- 輕量級Web框架Flask(二)Web框架Flask
- Nginx專題(1):Nginx之反向代理及配置Nginx
- Nginx 學習系列(一) ------------- 正向代理與反向代理Nginx
- Nginx 外的另一選擇,輕量級開源 Web 伺服器 Tengine 釋出新版本NginxWeb伺服器
- nginx的反向代理proxy_pass指令Nginx
- Nginx反向代理minio踩坑記錄Nginx
- Nginx(五):http反向代理的實現NginxHTTP
- docker 安裝 nginx 並配置反向代理DockerNginx