Nginx 简介和使用
- Nginx簡介
- Nginx發展介紹
- Nginx作者
- 正向代理和反向代理概念
- 網站代理服務器查看
- Nginx環境搭建
- 下載
- 安裝前準備
- 安裝
- 啟動
- 檢測Nginx是否啟動
- 關閉
- 重啟
- Nginx核心配置文件說明
- Nginx主要功能
- 1、靜態網站部署
- 2、負載均衡
- 負載均衡概述
- 負載均衡實現方式
- Nginx負載均衡策略
- 負載均衡其他配置
- 3、靜態代理
- 靜態代理實現方式
- 4、動靜分離
- 5、虛擬主機
- 配置虛擬主機方式
Nginx簡介
Nginx發展介紹
Nginx 是一個高性能的(靜態)Web服務器和反向代理服務器,也可以作為郵件代理服務器。
Nginx特點是占用內存少,并發處理能力強,以高性能、第系統資源消耗而聞名,Nginx官方測試為5萬并發請求。與Nginx同類型的Web服務器還有Apache Lighttpd、Tengine(阿里巴巴的)等。國內互聯網中大量使用了Nginx,比如新浪、網易、美團、搜狐等。
Nginx是免費開源的,同時Nginx也有收費的商業版本,商業版本提供了性能優化、宕機等緊急問題處理等技術支持和服務。
傳統方式:
問題:tomcat連接數量有上限,超過之后其他人訪問就要排隊了,用戶體驗下降
改進:建立tomcat集群,采用Nginx進行反向代理。
Nginx作者
伊戈爾·賽索耶夫,俄羅斯,c語言開發的
正向代理和反向代理概念
反向代理(Reverse Proxy) 方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器;
正向代理 類似一個跳板機,代理訪問外部資源。比如:我是一個用戶,我訪問不了某個網站,但是我能訪問一個代理服務器,這個代理服務器,它能幫我訪問我訪問不了的網站,于是我先連上代理服務器,告訴他我需要訪問的網站,代理服務器去取回來,返回給我。
總結:正向代理代理對象是客戶端,反向代理代理對象是服務端
網站代理服務器查看
- 淘寶:tengine
- 網易:nginx
Nginx環境搭建
下載
免費開源網站:http://nginx.org
下載Linux版本的nginx-1.14.2.tar.gz
方式一:直接在Linux輸入命令 wget http://nginx.org/download/nginx-1.14.2.tar.gz
方式二:先下載下來,再上傳到linx服務器的/home/soft/目錄下
安裝前準備
Nginx的安裝需要確定Linux安裝相關的幾個庫,否則配置和變異會出現錯誤;
執行下面命令:(如果存在則跳過,不存在就下載)
安裝
安裝成功后,可以切換到/user/local/nginx目錄下,查看nginx內容:
- conf/nginx.conf :主配置文件
- html/50x.html:錯誤頁面
- html/index.html:歡迎首頁面
- logs/:日志文件存放目錄
- sbin/nginx:啟動命令
上述過程如下:
啟動
普通啟動
切換到nginx安裝目錄的sbin目錄下,執行 ./nginx
配置文件啟動
sbin目錄下執行./nginx -c /user/local/nginx/conf/nginx.conf -t
或者直接執行/user/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf -t
其中 -c 指定配置文件,且配置文件路徑必須是絕對路徑
其中 -t 是檢查配置文件,可以知道配置文件是否正確
檢測Nginx是否啟動
nginx體系結構由 master 進程和其 worker 進程組成
master 進程讀取配置文件,并維護 worker 進程,而 worker 進程則對請求進行實際處理
關閉
優雅關閉
找出nginx進程號:ps -ef | grep nginx
殺死master進程:kill -QUIT master-pid
快速關閉
找出nginx進程號:ps -ef | grep nginx
殺死master進程:kill -TERM master-pid
優雅關閉:命令執行后,nginx服務器不再接收請求,但要把之前的請求處理完畢之后再關閉,可能需要一段時間。
快速關閉:命令執行后,nginx服務器不管請求是否處理完成,直接關閉,比較暴力,快速快。
使用kill -9 pid 只能殺死一個pid進程,比如殺死master進程,但worker進程還在,所以就不要用 -9 了。
重啟
執行命令 nginx -s reload,包含關閉和啟動兩個操作。
Nginx核心配置文件說明
Nginx核心配置文件在Nginx安裝目錄/user/local/nginx/conf目錄下,名為nginx.conf。
Nginx核心配置文件主要由三部構成:
worker_connections最大65535
nginx并發量=worker_processes x worker_connections
一個http里面可能有多個server,保證多個server的端口號和服務名不完全一樣即可:
Nginx主要功能
1、靜態網站部署
Nginx 是一個 HTTP 的 Web 服務器,可以將服務器上的靜態文件(如HTML、圖片等)通過 HTTP 協議返回給瀏覽器客戶端。
注意:root 的值(/opt/www)對應 /ace 中 / 的值,所以,當請求的 url 為 /ace時,請求資源路徑為 /opt/www/ace。
2、負載均衡
負載均衡概述
網站創立初期,一般使用單機對外提供集中式服務。隨著業務量增大,一臺服務器不夠用,此時就回把多臺機器組成一個集群提供對外服務,但是,我們的網站對外提供的訪問入口通常只有一個,比如 www.web.com。那么當用戶在瀏覽器上輸入www.web.com進行訪問的時候,如何將用戶的請求分發到集群中不同的機器上呢,這就是負載均衡要做的事情。
負載均衡通常是指將請求“均勻”分攤到集群中多個服務器節點上執行,這里的均勻是指在一個比較大的統計范圍內是基本均勻的,并不是完全均勻。
負載均衡實現方式
比如 F5、深信服、Array 等
優點:有廠商專業的技術服務團隊提供支持,性能穩定
缺點:費用昂貴,對于規模小的網絡應用成本高
比如 Nginx、LVS、HAProxy
優點:免費開源、成本低廉
Nginx通過在nginx.conf文件進行配置,即可實現負載均衡(默認輪詢策略)
upstream是配置nginx與后端服務器負載均衡非常重要的一個模塊,并且它還能對后端的服務器的健康狀態進行檢查,若后端服務器中的一臺發生故障,則前端的請求不會轉發到該故障機器。
Nginx負載均衡策略
注意:這里的輪詢并不是每個請求輪流分配到不同的后端服務器,與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同一個后端服務器,主要應用于后端服務器為緩存時的場景。如果后端服務器down掉,將自動提出
每個請求按一定比例分發到不同的后端服務器,weight 值越大訪問的比例越大,用于后端服務器性能不均勻的情況。
weight值5和2,代表服務器192.168.0.1處理5個請求的時間和服務器192.168.0.2處理2個請求的時間是一樣的。
算法:hash(“192.168.0.1”)%2=0,1
ip_hash也叫做IP綁定,每個請求按訪問ip的hash值分配,這樣每個訪問客戶端會固定訪問一個后端服務器,可以解決會話Session丟失問題。但可能會導致某臺服務器壓力過大。
web請求會被轉發到連接數量最少的服務器上。
負載均衡其他配置
- 配置1:
- 配置2:
一般在項目升級的時候,可以先對backup服務器升級(用戶訪問不到),然后取消其backup狀態,并設置其他服務器為down,再升級其他的服務器,升級完畢取消down的狀態即可。然后對Nginx重新reload,reload不會影響用戶的訪問,或者可以給一個提示頁面,系統正在升級。
3、靜態代理
把所有靜態資源的訪問改為訪問nginx,而不是訪問tomcat,這種方式叫靜態代理。因為nginx更擅長靜態資源的處理,性能更好,效率更高。
所以在實際應用中,我們將靜態資源比如圖片、css、html、js等交給nginx處理,而不是由tomcat處理。
靜態代理實現方式
方式一、在 nginx.conf 的 location 中配置靜態資源的后綴
例如:當訪問靜態資源,則從 linux 服務器 /opt/static 目錄下獲取
說明:
- ~表示正則匹配,也就是說后面的內容可以是正則表達式匹配
- 第一個 . 表示任意字符
- * 表示一個或者多個字符
- \.是轉義字符,是后面這個點的轉義字符
- | 表示或者
- $ 表示結尾
整個配置表示以 .js/css/html…為后綴結尾的文件都由nginx處理,返回靜態資源的目錄為/opt/static,要注意目錄權限問題,如果權限不足,就給目錄賦予權限;否則會出現403錯誤 chmod 755
方式二、在 nginx.conf 的 location 中配置靜態資源所在目錄實現
例如:當訪問靜態資源,則從 linux 服務器 /opt/static 目錄下獲取
整個配置表示訪問路徑 xxx/css、xxx/js、xxx/img、xxx/images 時由nginx處理,返回靜態資源的目錄為/opt/static。
4、動靜分離
靜態資源由nginx處理
動態資源由tomcat處理
架構圖如下:
中間負責負載均衡的Nginx的配置:
右下角負責靜態資源代理的Nginx的配置:
5、虛擬主機
虛擬主機,就是把一臺物理服務器劃分成多個“虛擬”的服務器,這樣我們的一臺物理服務器就可以當做多個服務器來使用,從而可以配置多個網站。
Nginx提供虛擬主機這個功能,就是為了讓我們不需要安裝多個Nginx,就可以運行多個域名不同的網站。
Nginx下,一個server標簽就是一個虛擬主機。nginx的虛擬主機就是通過nginx.conf中server節點指定的,想要設置多個虛擬主機,配置多個server節點即可。
例如:www.meituan.com 切換城市,可以看到不同的城市地址不一樣(二級域名)
如果一個公司有多個二級域名,沒有必要為每個二級域名都提供一臺Nginx服務器,就可以使用虛擬主機技術,在一臺ngnix服務器上,模擬多個虛擬服務器。
配置虛擬主機方式
方式一、基于端口的虛擬主機(了解)
基于端口的虛擬主機配置,使用端口來區分。由于一般我們不寫端口號,這個一般就不用。
server{listen 8080;server_name www.myweb.com;location /myweb{proxy_pass http://www.myweb1.com;} } server{listen 8081;server_name www.myweb.com;location /myweb{proxy_pass http://www.myweb2.com;} }方式二、基于域名的虛擬主機(掌握)
基于域名的虛擬主機配置,使用域名來區分。常用方式。
server{listen 80;server_name www.myweb1.com;location /myweb{proxy_pass http://www.myweb1.com;} } server{listen 80;server_name www.myweb2.com;location /myweb{proxy_pass http://www.myweb2.com;} }需要修改本地hosts文件:
192.168.21.1 www.myweb1.com 192.168.21.1 www.myweb2.com架構圖:
總結
以上是生活随笔為你收集整理的Nginx 简介和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android官方开发文档Trainin
- 下一篇: 前端如何做极致的首屏渲染速度优化