一、Nginx 簡介
Nginx是一個高性能WEB服務器(說白了就是處理HTTP請求的服務器),’
單純的從處理HTTP請求這個功能來說呢,除Nginx之外Apache、Tomcat、Jetty、IIS,它們都是Web服務器,或者叫做WWW(World Wide Web)服務器,相應地也都具備Web服務器的基本功能,
Nginx 相對基它WEB服務有什么優勢呢?
1、Tomcat、Jetty 面向java語言,只能處理由Java語言實作的應用,先天就是重量級的WEB服務器,專門用來處理動態的請求,如果處理靜態資源的話,其性能與Nginx沒有可比性,
2、IIS只能在Windows作業系統上運行,
Windows作為服務器在穩定性與其他一些性能上都不如類UNIX作業系統,因此,在需要高性能Web服務器的場合下IIS并不占優,
3、Apache的發展時期很長,而且是目前毫無爭議的世界第一大Web服務器,
其有許多優點,如穩定、開源、跨平臺等,但它出現的時間太長了,在它興起的年代,互聯網的產業規模遠遠比不上今天,所以它被設計成了一個重量級的、不支持高并發的Web服務器,在Apache服務器上,如果有數以萬計的并發HTTP請求同時訪問,就會導致服務器上消耗大量記憶體,作業系統內核對成百上千的Apache行程做行程間切換也會消耗大量CPU資源,并導致HTTP請求的平均回應速度降低,這些都決定了Apache不可能成為高性能Web服務器,這也促使了Lighttpd和Nginx的出現,
nginx是 反向代理服務軟體
正向代理:管理的是客戶端,瀏覽的資訊都可以在代理服務器中查看到,沒有 隱私權限,
反向代理:管理的是被訪問的服務器端,對客戶端是沒有(或者無法)限制的.
它是限制了集群中的哪個服務器可以被訪問,哪個不可以被訪問,
正向代理,代理的客戶端訪問外網的程序:

反向代理管理的是被訪問的服務器tomcat

二、Nginx 安裝
1、Windows安裝
1.1 下載Nginx安裝包

1.2 將這個安裝包加壓到沒有中文路徑和空格的檔案
1.3 重要目錄介紹

conf檔案夾:存放的是啟動nginx加載的組態檔只加載一個叫做nginx.conf 的組態檔.
logs檔案夾:里面有個error.log的檔案,可以使用它觀察啟動的情況,是否正 常啟動,或者出錯.正常啟動會顯示2個pid,其中一個pid是守護行程,另外一個是nginx程式

reload、start、stop的bat檔案,是啟動、重啟、停止nginx運行的windows命令檔案,是后加的,原檔案不存在.
2、Linux安裝
2.1 安裝環境準備
(1)linux 內核2.6及以上版本:
只有2.6之后才支持epool ,在此之前使用select或pool多路復用的IO模型,無法解決高并發壓力的問題,通過命令uname -a 即可查看,(ps:epool是非阻塞IO非常關鍵的一個點,只有epool才能實作一個連接,處理成千上萬的請求這種功能)
#查看 linux 內核
uname -a
(2)GCC編譯器
GCC(GNU Compiler Collection)可用來編譯C語言程式,
Nginx不會直接提供二進制可執行程式,只能下載原始碼進行編譯,
(3)PCRE庫
PCRE(Perl Compatible Regular Expressions,Perl兼容正則運算式)是由Philip Hazel開發的函式庫,目前為很多軟體所使用,該庫支持正則運算式,
(4)zlib庫
zlib庫用于對HTTP包的內容做gzip格式的壓縮,如果我們在nginx.conf里配置了gzip on,并指定對于某些型別(content-type)的HTTP回應使用gzip來進行壓縮以減少網路傳輸量,
(5)OpenSSL開發庫
如果我們的服務器不只是要支持HTTP,還需要在更安全的SSL協議上傳輸HTTP,那么就需要擁有OpenSSL了,另外,如果我們想使用MD5、SHA1等散列函式,那么也需要安裝它,
上面幾個庫都是Nginx 基礎功能所必需的,為簡單起見我們可以通過yum 命令統一安裝,
#yum 安裝nginx 環境
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
2.2 原始碼獲取
nginx 下載頁

這里我們使用; nginx-1.14.0進行介紹
# 下載nginx 最新穩定版本
wget http://nginx.org/download/nginx-1.14.0.tar.gz
#解壓
tar -zxvf nginx-1.14.0.tar.gz
2.3 最簡單的安裝
# 全部采用默認安裝
./configure & make & make install
make & make install
執行完成之后 nginx 運行檔案 就會被安裝在 /usr/local/nginx 下,
基于引數構建
./configure
2.4 模塊更新
# 添加狀態查查看模塊并重新創建主模塊
./configure --with-http_stub_status_module & make
# 將新生成的nginx 檔案覆寫 舊檔案,
cp objs/nginx /usr/local/nginx/sbin/
# 查看是否更新成功 顯示了 configure 構建引數表示成功
/usr/local/nginx/sbin/nginx -V
三、控制命令

#查看命令幫助
./sbin/nginx -?

#默認方式啟動:
./sbin/nginx
#指定組態檔啟動
./sbing/nginx -c /tmp/nginx.conf
#指定nginx程式目錄啟動
./sbin/nginx -p /usr/local/nginx/
#快速停止
./sbin/nginx -s stop
#優雅停止
./sbin/nginx -s quit
stop命令:立馬停止
quit命令:先關閉ngin的所有對外埠,新的請求進不來了,但是之前已經進入的請求還是會繼續處理,直到把所有的請求處理完,才會徹底關閉(線上環境的話,盡量使用quit命令)
# 熱裝載組態檔
./sbin/nginx -s reload
reload命令:修改了nginx的組態檔,但是不想重啟nginx服務,則可以使用reload來對組態檔進行多載
# 重新打開日志檔案
./sbin/nginx -s reopen
reopen命令:重新打開日志檔案比如,原來的組態檔access.log,現在將該檔案命名為access.log.backup,然后新建一個日志檔案access.log檔案,
重新訪問nginx,發現新的access.log檔案大小沒有變化,而備份的日志檔案卻變大了,
這是因為在nginx中其實指向的是檔案的句柄(可以形象的理解為指標),雖然把檔案拷貝了,但是檔案的句柄還是在原檔案中,所以日志依然會往原來的檔案中追,這個時候,可以使用reopen來使日志列印在新檔案中
# 設定全域命令,如下表示設定啟動用戶為root
./sbin/nginx -g "user root;"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/293330.html
標籤:其他
