Nginx編譯安裝及介紹
阿新 • • 發佈:2018-10-31
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 *:*