centos7.4編譯安裝nginx

前言

    nginx作爲後起之秀,最然目前市場份額現在遠不足apache,但是從增長速度和發展前景來看,nginx是未來的趨勢。具體數據可以參考https://www.netcraft.com/。截至到寫博客的時間,全球的web server的佔用率參考下圖,可以看出明顯的趨勢。

4c66c5ab29fcfbcdd013a8be454e440f.png-wh_


nginx的特性

    1、可針對靜態資源高速併發訪問及緩存

    2、可使用反向代理加速,並且可進行數據緩存

    3、具有簡單負載均衡、節點健康檢查和容錯功能

    4、支持遠程FastCGI服務的緩存加速

    5、支持FastCGI、Uwsgi、SCGI、Memcached Servers的加速和緩存

    6、支持SSL、TLS、SNI

    7、具有模塊化的架構:過濾器包括gzip壓縮、ranges支持、chunked響應、XSLT、SSI及圖像縮放等功能。在SSI過濾器中,一個包含多個SSI的頁面,如果經由FastCGI或反向代理處理,可被並行處理。

    8、同時具備其他web server的特性


nginx的特點

    1、基於異步網絡I/O模型

    2、具備支持高性能,高併發的特性,併發連接可高達數萬

    3、對小文件高併發支持很好,性能很高

    4、不支持類似Apache的DSO模式,擴展庫必須編譯進主程序(缺點)

    5、進程佔用資源比較低

    6、支持Web、反向Proxy、Cache三大重點功能,並且都很優秀

    7、市場份額在逐年快速增加


爲何nginx性能要強?

    nginx使用最新的epoll和kqueue異步網絡I/O模型,而Apache使用的傳統的select模型。目前Linux下能夠承受高併發訪問的Squid、Memcached軟件採用的都是epoll模型。這裏稍微給大家稍微介紹一下兩者區別。

指標
selectepoll
性能隨着連接數的增加性能急劇下降,處理成千上萬併發連接數時,性能很差隨着連接數的增加,性能基本上沒有下降。處理成千上萬併發連接時,性能很好
連接數連接數有限制,處理的最大連接數不超過1024。如果要處理的連接數超過1024個,需要重新編譯連接數無限制
內在處理機制線性輪詢回調callback

參考資料:《跟老男孩學Linux運維:Web集羣實戰》


編譯安裝nginx

    1、安裝編譯環境

]#yum install -y "development tools"
]#yum install -y pcre-devel
]#yum install -y openssl-devel

    2、通過官網下載相對應的源碼。http://nginx.org/

    3、上傳解壓並根據需要修改參數

]#vim  src/http/ngx_http_header_filter_module.c
static u_char ngx_http_server_string[] = "Server: Apache" CRLF;   <===這裏更改是server_tokens off的情況下顯示的內容
]#vim src/core/nginx.h
#  define NGINX_VERSION      "2.4.2"               <===這裏是更改默認的版本和名稱
#  define NGINX_VER          "Tengine/" NGINX_VERSION
]#./configure --prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_dav_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio \
]#make && make install
]#vim /etc/profile.d/nginx.sh                     <===配置環境變量
  1 export PATH=/usr/local/nginx/sbin:$PATH
]#nginx                                 <===啓動服務

爲什麼要修改這兩個參數?先找個客戶端測試一下

]#curl -I 192.168.32.112
HTTP/1.1 200 OK                        
Server: Tengine/2.4.2                            <===完美的隱藏了我們本身的web server,讓***者蒙圈
Date: Sun, 29 Oct 2017 12:17:13 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 29 Oct 2017 10:22:52 GMT
Connection: keep-alive
ETag: "59f5abfc-264"
Accept-Ranges: bytes
]#vim /etc/nginx/nginx.conf                    
http{
    server_tokens off; 
}
]#curl -I 192.168.32.112
HTTP/1.1 200 OK
Server: Apache                                 <===關閉後顯示的是src/http/ngx_http_header_filter_module.c中的名字,兩種方法都可以進行隱藏實際的web server。提高安全性                                                       
Date: Sun, 29 Oct 2017 12:30:34 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 29 Oct 2017 10:22:52 GMT
Connection: keep-alive
ETag: "59f5abfc-264"
Accept-Ranges: bytes
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章