1. 程式人生 > >Nginx編譯安裝及介紹

Nginx編譯安裝及介紹

nginx簡介

  • nginx時一款輕量級的Web伺服器、反向代理伺服器及郵件代理伺服器;
  • nginx的特點是佔有記憶體少,併發能力強,穩定,功能豐富。

nginx優點

  • 高併發連線:能夠支撐5萬併發連線(官方測試),實際生產環境中支撐2-3萬併發連線數;
  • 記憶體消耗少:在3萬併發連線下,開啟10程序才消耗150M;
  • 配置檔案簡單:風格跟程式一樣通俗易懂;
  • 成本低廉:開源軟體,免費使用;
  • 支援Rewrite重寫規則:能夠根據域名、URL的不同,能夠將HTTP請求分給不同的後端伺服器群組;
  • 內建的健康檢查功能:如果後端的某臺伺服器宕機了,不會影響前端訪問;
  • 節省頻寬:支援GZIP壓縮,可以新增瀏覽器本地快取的header頭;
  • 穩定性高:用於反向代理,宕機的概率微乎其微;
  • 模組化設計:模組可以動態編譯;
  • 外圍支援好:文件全,二次開發和模組化較多;
  • 支援熱部署:可以不停機重新載入配置檔案;
  • 支援事件驅動、AIO(非同步IO)、mmap(記憶體對映)等效能優化。

nginx的功能及應用類別

nginx的基本功能

  • 靜態資源的web伺服器,能快取開啟的檔案描述符;
  • http、smtp、pop3協議的反向代理伺服器;
  • 快取加速、負載均衡;
  • 支援FastCGI(fpm、LNMP),uWSGI(Python)等
  • 模組化(非DSO機制),過濾器zip、SSL及影象的大小調整
  • 支援SSL

nginx的擴充套件功能

  • 給予名稱和IP的虛擬主機;
  • 支援keepalive(長連線);
  • 支援平滑升級;
  • 定製訪問日誌、支援使用日誌緩衝區提高日誌儲存效能;
  • 支援URL重寫;
  • 支援路徑別名;
  • 支援基於IP及使用者的訪問控制;
  • 支援速率限制,支援併發數限制。

nginx的應用類別

  • 使用nginx結合FastCGI執行PHP、JSP(JAVA語言)、Perl等程式;
  • 適應nginx做反向代理、負載均衡、規則過濾;
  • 使用nginx執行靜態HTML網頁、圖片;
  • nginx與其他新技術的結合使用。

nginx的工作原理

  • nginx的模組直接被編譯進nginx,屬於靜態編譯方式;
  • 啟動nginx後,nginx的模組會被自動載入,與apache不一樣;
  • 在解析配置檔案時,nginx的每個模組都有可能去處理某個請求,但是同一個請求只能有一個模組來完成
  • 啟動nginx時,會啟動一個Master程序,這個程序不處理任何客戶端的請求,主要用來產生worker執行緒,一個worker執行緒用來處理n個request請求。

nginx編譯安裝

  • 建立系統使用者nginx
[[email protected] ~]# groupadd -r nginx
[[email protected] ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
  • 配置網路源
[[email protected] ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0   5859      0 --:--:-- --:--:-- --:--:--  5881
[[email protected] ~]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
  • 安裝依賴
[[email protected] ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
  • 建立nginx使用者和組
[[email protected] ~]# groupadd -r nginx
[[email protected] ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
  • 編譯安裝nginx
[[email protected] ~]# cd nginx-1.12.2
[[email protected] nginx-1.12.2]# ./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
[[email protected] nginx-1.12.2]# make -j 2 && make install
  • 設定環境變數
[[email protected] nginx-1.12.2]# cd /usr/local/nginx
[[email protected] nginx]# echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
[[email protected] nginx]# . /etc/profile.d/nginx.sh
  • 啟動nignx服務
[[email protected] nginx]# nginx
[[email protected] nginx]# ss -ntl
State       Recv-Q Send-Q               Local Address:Port                 Peer Address:Port 
LISTEN      0      128                              *:80                              *:*