1.Nginx基本概念
1.1Nginx是什麼,做什麼事情
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力在同類型的網頁服務器中表現較好。
Nginx可以作爲靜態頁面的web服務器,同時還支撐CGI協議的動態語言,比如:perl、php等。但是不支持java,Java程序只能通過與tomcat配合完成,Nginx專爲性能優化而開發,性能是其中最重要的考量,實現上非常注重效率,能經受高負載的考驗,有報告表明能支持5萬個併發連接數。
1.2反向代理
1.2.1正向代理
Nginx不僅可以做反向代理,實現負載均衡,還能用作正向代理進行上網等功能。
如果把局域網外的Internet想象成一個巨大的資源庫,則局域網中的客戶端要訪問Internet,則需要通過代理服務器來訪問,這種代理服務器就稱爲正向代理。
即:在我們的客戶端配置代理服務器,通過代理服務器進行互聯網的訪問
1.2.1反向代理
反向代理,其實客戶端對代理是無感知的,因爲客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據後,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的代理服務器地址,隱藏裏真是的服務器IP地址
1.3負載均衡
15個請求,通過反向代理服務器,把請求平均分配到集羣中的服務器去處理。
1.4動靜分離
爲加快網站的解析速度,可以把動態頁面和靜態頁面由不同的服務器來解析,加快解析速度,降低原來單個服務器的壓力。
2.Nginx安裝、常用命令和配置文件
2.1在Linux裏安裝
- 遠程連接工具連接服務器
- 下載tar.gz軟件
- 在安裝之前,需要先安裝一些相關的依賴
pcre
openssl
zlib
yum -y install make zlib zlib-devel gcc-c++ libtoll openssl-devel
- 安裝pcre,把pcre包放到服務器
- 解壓
- 進入解壓目錄,執行./configure
- 使用make && make install
- 安裝之後使用pcre-config --version查看版本
- 安裝nginx
- 放入Linux中
- 解壓
- 進入解壓目錄
- 執行./configure
- 使用make && make install
- cd /usr/local會有一個nginx文件夾
- 添加防火牆端口
2.2常用命令
使用命令的前提條件要進入nginx的目錄裏:cd /usr/local/nginx/sbin
- 查看nginx版本號·
./nginx -v
- 啓動nginx
./nginx
- 關閉nginx
./nginx -s stop` - 重新加載nginx
./nginx -s reload
2.3配置文件
配置文件位置/usr/local/nginx/conf/裏的nginx.conf
有三部分組成:
全局塊
從配置文件開始到events塊之間的內容,主要會設置一些影響nginx服務器整體運行的配置指令,主要包括配置運行Nginx服務器的用戶(組)允許生成worker process數,進程PID存放路徑、日誌存放路徑和類型以及配置文件的引入等
worker_provesses 1; #Nginx服務器併發處理服務器的關鍵配置,worker_provesser值越大,可以支持的併發數量也越多,但會受到硬件、軟件等設備的制約
events塊
events塊設計的指令主要影響Nginx服務器與用戶的網絡連接(常用的設置包括是否開啓對多work process下的網絡連接進行序列化,是否同時接收多個網絡連接,選取那些事件驅動模型來處理連接請求,每個work process可以同時支持的最大連接數量等)
work_connections 1024; #支持最大連接數,這個對Nginx的性能影響較大,在實際應用中靈活配置
http塊
這個模塊是Nginx服務器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這裏。
注意:http塊也可以包括http全局塊和server塊
- http塊
http全局塊配置的指令包括文件引入、MIME-TYPE定義、日誌自定義、連接超時時間、單鏈接請求上限等 - server塊
這塊和虛擬主機有密切關係,虛擬機從用戶角度看和一臺獨立的硬件主機是完全一樣的,該技術的生產是爲了節省互聯網服務器硬件成本。
每個http塊可以包括多個server塊,而每個server塊就相當於一個虛擬主機
而每個server塊也分爲全局server塊,以及可以同時包含多個location塊
- 全局server塊
最常見的配置是本虛擬主機的監聽配置和本虛擬主機的名稱和IP - location塊
一個server塊可以配置多個location塊
這個塊主要作用時基於Nginx服務器接收的請求字符串(例如server_name/uri-string),對虛擬主機名稱(也可以是IP別名)之外的字符串(例如:前面的/uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊也在這裏進行。
3.nginx配置反向代理
3.1實現效果
打開瀏覽器,在瀏覽器地址欄輸入地址,跳轉到Linux系統Tomcat主頁面中。
3.2具體實現
- 在Linux中安裝Tomcat,使用默認8080端口
4.nginx配置負載均衡
5.nginx配置動靜分離
6.nginx配置高可用集羣
7.nginx執行原理
文文的博客,如有問題留言指正~
未完待續。。。