一、背景 之前測試的項目前後端的"路由"(負責把前端發過來的請求轉發到相應的後端服務上)要用Nignx來取代原來的tomcat的http server功能,做這個替換的原因是Nignx輕量級,抗併發,處理靜態文件好。 Nignx常用做靜態內容服務和代理伺服器,直接外來請求轉發給後面的應用伺服器(to ...
一、背景
之前測試的項目前後端的"路由"(負責把前端發過來的請求轉發到相應的後端服務上)要用Nignx來取代原來的tomcat的http server功能,做這個替換的原因是Nignx輕量級,抗併發,處理靜態文件好。
Nignx常用做靜態內容服務和代理伺服器,直接外來請求轉發給後面的應用伺服器(tomcat,Django等),tomcat更多用來做一個應用容器,讓java web app泡在裡面的東西。
嚴格意義上來講,Nignx應該叫做HTTP Server,而tomcat是一個Application Server是一個Servlet/JSO應用的容器。
客戶端通過HTTP Server(Nignx)訪問伺服器上存儲的資源(HTML文件,圖片文件等),HTTP Server(Nignx)只是把伺服器上的文件通過HTTP協議傳輸給客戶端。
應用伺服器(tomcat)往往是運行在HTTP Server(Nignx)的背後,執行應用,將動態的內容轉化為靜態的內容之後,通過HTTP Server(Nignx)分發到客戶端。
請求的流轉過程概圖:
註意:nginx只是把請求做了分發,不做處理!!!
二、Nginx環境搭建
1、下載
2、解壓
# tar -xzf nginx-1.16.1.tar.gz
3、安裝依賴的基礎組件
因為nginx預設會依賴一些基礎組件,這些依賴組件主要有g++,gcc, openssl-devel, pcre-devel和zlib-devel,所以在正式安裝nginx前最好先安裝好這些組件。可以使用yum一次性安裝,運行以下命令:
# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
4、進入安裝包目錄、編譯安裝
# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 # make # make install
5、查看nginx版本
# nginx -v
顯示版本號,說明安裝成功
三、使用
1、配置文件
Nginx的配置文件預設為nginx.conf,我這裡通過新建了一個conf.d文件夾和.conf文件(.conf文件具體的內容參考nginx.conf)來完成配置,具體如下:
upstream模塊要負責負載均衡的配置,通過預設的輪詢調度方式來分發請求到後端伺服器
-
-- max_fails:表示失敗最大次數,超過失敗最大次數暫停服務
-
-- fail_timeout:表示如果請求受理失敗,暫停指定的時間之後重新發起請求
2、Nginx的啟動
直接輸入nginx命令,即可啟動
# nginx
還可以通過systemctl來啟動nginx
# systemctl start nginx
3、Nginx的停止
nginx的停止有兩種方式,分別是
1. nginx -s stop命令
2. kill -9 nginx_pid命令 # nginx_pid指的是主進程的pid號
同理,也可以通過systemctl來停止nginx
# systemctl stop nginx
需要說明的是,使用systemctl命令結束nginx進程時,只有通過systemctl啟動的nginx才能被正常結束,而通過運行nginx命令啟動的進程是不能被正常結束的。
使用kill命令來結束nginx進程。結束nginx進程的信號有兩個,分別是TERM和QUIT:
# kill -s QUIT nginx_pid
# kill -s TERM nginx_pid
前者(QUIT)用於快速停止nginx,後者(TERM)用於平緩停止nginx,區別在於平緩停止nginx會等待工作進程將請求結束以後再停止。
4、Nginx的配置文件重載
nginx的配置文件重載,這也是一個很重要的功能,因為很多時候需要修改nginx的配置文件,修改完成後需要重新載入配置文件,方法有2個
1. nginx -s reload
2. kill -s HUP nginx_pid命令