你好,游客 登錄 注冊 搜索
背景:
閱讀新聞

Nginx1.10.2穩定版本tcp四層負載安裝配置講解

[日期:2017-01-26] 來源:Linux社區  作者:jerrymin [字體: ]

nginx1.10.2(2016.10.18)是最新穩定版,適合線上運行,最新開發版為1.11.8(2016.12.27)
系統版本CentOS6.8 64位,所有依賴都是系統rpm包,由于epel-release的nginx包不是最新的穩定版本所以選擇源碼包安裝nginx通過源碼編譯安裝

1、安裝編譯所需工具
  yum groupinstall "Development Tools"
  yum install wget

2、到官網下載最新的源代碼(https://nginx.org/en/)
  cd /usr/local/src
  wget http://nginx.org/download/nginx-1.10.2.tar.gz
  tar zxvf nginx-1.10.2.tar.gz

3、安裝依賴包
  yum install zlib-devel openssl-devel pcre-devel
  zlib: 為nginx提供gzip模塊,需要zlib庫支持,傳輸數據打包,省流量(但消耗資源)
  openssl: 為nginx提供ssl功能
  pcre: 為支持地址重寫rewrite功能

4、創建用來運行nginx的用戶及組
  groupadd -g 58 www
  useradd -u 58 -g 58 -M www -s /sbin/nologin -g參數為www用戶指定了一個組。-M參數保證其不 自動生成home目錄。

5、編譯源代碼
  先使用./configure –help 查看編譯幫助:
  我的線上編譯參數,默認開啟的不用寫
  ./configure --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-stream  --with-stream_ssl_module --with-pcre
./configure --help
 
  --help                            print this message
 
  --prefix=PATH                      set installation prefix #Nginx安裝的根路徑,默認為 /usr/local/nginx。
  --sbin-path=PATH                  set nginx binary pathname #指定nginx二進制文件的路徑,默認為PATH/sbin/nginx。
  --modules-path=PATH                set modules path #Perl模塊位置
  --conf-path=PATH                  set nginx.conf pathname #設定nginx配置文件地址,默認為PATH/conf/nginx.conf。
  --error-log-path=PATH              set error log pathname #錯誤文件路徑,默認為 PATH/logs/error.log。
  --pid-path=PATH                    set nginx.pid pathname # master進程pid寫入的文件位置,通常在var/run下,默認為 PATH/logs/nginx.pid。
  --lock-path=PATH                  set nginx.lock pathname #共享存儲器互斥鎖文件路徑
 
  --user=USER                        set non-privileged user for worker processes #指定程序運行時的非特權用戶
  --group=GROUP                      set non-privileged group for worker processes #指定程序運行時的非特權用戶組
 
  --build=NAME                      set build name #編譯名稱
  --builddir=DIR                    set build directory #指向編譯目錄
 
  --with-select_module              enable select module 允許或不允許開啟SELECT模式,如果configure沒有找到合適的模式,比如,kqueue(sun os)、epoll(linux kenel 2.6+)、rtsig(實時信號)
  --without-select_module            disable select module 禁用select模塊支持
  --with-poll_module                enable poll module 啟用poll模塊支持(功能與select相同,與select特性相同,為一種輪詢模式,不推薦在高載環境下使用)
  --without-poll_module              disable poll module 禁用poll模塊支持
 
  --with-threads                    enable thread pool support
 
  --with-file-aio                    enable file AIO support #為freeBSD4.3+和linux2.6.22+系統啟用異步io
 
  --with-ipv6                        enable IPv6 support #啟用ipv6支持
   
#默認禁用的模塊
  --with-http_ssl_module            enable ngx_http_ssl_module #使支持https請求,需已安裝openssl
  --with-http_v2_module              enable ngx_http_v2_module #啟用HTTP V2
  --with-http_realip_module          enable ngx_http_realip_module #此模塊支持顯示真實來源IP地址,主要用于NGINX做前端負載均衡服務器使用
  --with-http_addition_module        enable ngx_http_addition_module #輸出過濾器,使你能夠在請求經過一個location前或后時在該location本身添加內容
  --with-http_xslt_module            enable ngx_http_xslt_module #這個模塊是一個過濾器,它可以通過XSLT模板轉換XML應答
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module 
  --with-http_image_filter_module    enable ngx_http_image_filter_module #圖像過濾器,在將圖像投遞到客戶之前進行處理(需要libgd庫)
  --with-http_image_filter_module=dynamic
                                    enable dynamic ngx_http_image_filter_module 
  --with-http_geoip_module          enable ngx_http_geoip_module #創建基于與MaxMind GeoIP相配的客戶端地址
  --with-http_geoip_module=dynamic  enable dynamic ngx_http_geoip_module
  --with-http_sub_module            enable ngx_http_sub_module #這個模塊可以能夠在nginx的應答中搜索并替換文本
  --with-http_dav_module            enable ngx_http_dav_module #為文件和目錄指定權限,限制不同類型的用戶對于頁面有不同的操作權限
  --with-http_flv_module            enable ngx_http_flv_module #這個模塊支持對FLV(flash)文件的拖動播放
  --with-http_mp4_module            enable ngx_http_mp4_module #支持H.264/AAC文件為偽流媒體
  --with-http_gunzip_module          enable ngx_http_gunzip_module #對于不支持gzip編碼的客戶,該模塊用于為客戶解壓縮預壓縮內容
  --with-http_gzip_static_module    enable ngx_http_gzip_static_module #這個模塊在一個預壓縮文件傳送到開啟Gzip壓縮的客戶端之前檢查是否已經存在以“.gz”結尾的壓縮文件,這樣可以防止文件被重復壓縮
  --with-http_auth_request_module    enable ngx_http_auth_request_module 
  --with-http_random_index_module    enable ngx_http_random_index_module #從目錄中選擇一個隨機主頁
  --with-http_secure_link_module    enable ngx_http_secure_link_module #該模塊提供一種機制,它會將一個哈希值鏈接到一個url中,因此,只有那些使用正確的密碼能夠計算鏈接
  --with-http_degradation_module    enable ngx_http_degradation_module #允許在內存不足的情況下返回204或444碼
  --with-http_slice_module          enable ngx_http_slice_module 
  --with-http_stub_status_module    enable ngx_http_stub_status_module #取得一些nginx的運行狀態,輸出的狀態信息可使用RRDtool或類似的工具繪制成圖
#默認啟用的模塊
  --without-http_charset_module      disable ngx_http_charset_module #重新編碼web頁面
  --without-http_gzip_module        disable ngx_http_gzip_module #同-with-http_gzip_static_module功能一樣
  --without-http_ssi_module          disable ngx_http_ssi_module #提供在輸入端處理處理服務器包含文件(SSI)的過濾器,目前支持SSI命令的列表是不完整的
  --without-http_userid_module      disable ngx_http_userid_module #用來處理用來確定客戶端后續請求的cookies
  --without-http_access_module      disable ngx_http_access_module #供了一個簡單的基于主機的訪問控制。允許/拒絕基于ip地址
  --without-http_auth_basic_module  disable ngx_http_auth_basic_module #可以使用用戶名和密碼基于http基本認證方法來保護你的站點或其部分內容
  --without-http_autoindex_module    disable ngx_http_autoindex_module #自動生成目錄列表,只在ngx_http_index_module模塊未找到索引文件時發出請求。
  --without-http_geo_module          disable ngx_http_geo_module #創建一些變量,其值依賴于客戶端的IP地址
  --without-http_map_module          disable ngx_http_map_module #使用任意的鍵/值對設置配置變量
  --without-http_split_clients_module disable ngx_http_split_clients_module #用來基于某些條件劃分用戶。條件如:ip地址、報頭、cookies等等
  --without-http_referer_module      disable ngx_http_referer_module #用來過濾請求,拒絕報頭中Referer值不正確的請求
  --without-http_rewrite_module      disable ngx_http_rewrite_module #允許使用正則表達式改變URI,并且根據變量來轉向以及選擇配置
  --without-http_proxy_module        disable ngx_http_proxy_module #有關代理服務器
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module #允許Nginx 與FastCGI 進程交互,并通過傳遞參數來控制FastCGI 進程工作。
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module #用來使用uwsgi協議,uWSGI服務器相關
  --without-http_scgi_module        disable ngx_http_scgi_module #用來啟用SCGI協議支持,SCGI協議是CGI協議的替代。
  --without-http_memcached_module    disable ngx_http_memcached_module #用來提供簡單的緩存,以提高系統效率
  --without-http_limit_conn_module  disable ngx_http_limit_conn_module #允許你對于一個地址進行連接數的限制用一個給定的session或一個特定的事件
  --without-http_limit_req_module    disable ngx_http_limit_req_module #允許你對于一個地址進行請求數量的限制用一個給定的session或一個特定的事件
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module #在內存中常駐了一個1*1的透明GIF圖像,可以被非常快速的調用
  --without-http_browser_module      disable ngx_http_browser_module #用來創建依賴于請求報頭的值
  --without-http_upstream_hash_module
                                    disable ngx_http_upstream_hash_module #用于簡單的負載均衡
  --without-http_upstream_ip_hash_module
                                    disable ngx_http_upstream_ip_hash_module 
  --without-http_upstream_least_conn_module
                                    disable ngx_http_upstream_least_conn_module 
  --without-http_upstream_keepalive_module
                                    disable ngx_http_upstream_keepalive_module
  --without-http_upstream_zone_module
                                    disable ngx_http_upstream_zone_module
 
  --with-http_perl_module            enable ngx_http_perl_module #這個模塊允許nginx使用SSI調用perl或直接執行perl(使用會降低性能)
  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module
  --with-perl_modules_path=PATH      set Perl modules path #設定perl模塊路徑
  --with-perl=PATH                  set perl binary pathname #設定perl庫文件路徑
 
  --http-log-path=PATH              set http access log pathname #設定access log路徑
  --http-client-body-temp-path=PATH  set path to store http client request body temporary files #設定http客戶端請求臨時文件路徑
  --http-proxy-temp-path=PATH        set path to store http proxy temporary files #設定http代理臨時文件路徑
  --http-fastcgi-temp-path=PATH      set path to store http fastcgi temporary files #設定http fastcgi臨時文件路徑
  --http-uwsgi-temp-path=PATH        set path to store http uwsgi temporary files #設定http uwsgi臨時文件路徑
  --http-scgi-temp-path=PATH        set path to store http scgi temporary files #設定http scgi臨時文件路徑
 
  --without-http                    disable HTTP server #完全禁用http模塊,如果只想支持mall,可以使用此項設置
  --without-http-cache              disable HTTP cache #在使用upstream模塊時,nginx能夠配置本地緩存內容,此選項可禁用緩存
 
  --with-mail                        enable POP3/IMAP4/SMTP proxy module #激活POP3/IMAP4/SMTP代理模塊,默認未激活
  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module            enable ngx_mail_ssl_module #SMTP可以使用SSL/TLS.配置已經定義了HTTP SSL模塊,但是不支持客戶端證書檢測
  --without-mail_pop3_module        disable ngx_mail_pop3_module #啟用mail模塊后,單獨禁用pop3模塊
  --without-mail_imap_module        disable ngx_mail_imap_module #啟用mail模塊后,單獨禁用imap模塊
  --without-mail_smtp_module        disable ngx_mail_smtp_module #啟用mail模塊后,單獨禁用smtp模塊
 
  --with-stream                      enable TCP/UDP proxy module
  --with-stream=dynamic              enable dynamic TCP/UDP proxy module
  --with-stream_ssl_module          enable ngx_stream_ssl_module
  --without-stream_limit_conn_module disable ngx_stream_limit_conn_module
  --without-stream_access_module    disable ngx_stream_access_module
  --without-stream_upstream_hash_module
                                    disable ngx_stream_upstream_hash_module
  --without-stream_upstream_least_conn_module
                                    disable ngx_stream_upstream_least_conn_module
  --without-stream_upstream_zone_module
                                    disable ngx_stream_upstream_zone_module
 
  --with-google_perftools_module    enable ngx_google_perftools_module #調試用,剖析程序性能瓶頸
  --with-cpp_test_module            enable ngx_cpp_test_module
 
  --add-module=PATH                  enable external module #啟用外部模塊支持
  --add-dynamic-module=PATH          enable dynamic external module
#編譯相關的參數
  --with-cc=PATH                    set C compiler pathname #如果想設置一個不在默認path下的c編譯器
  --with-cpp=PATH                    set C preprocessor pathname #設置c預處理器的相對路徑
  --with-cc-opt=OPTIONS              set additional C compiler options #設置C編譯器參數
  --with-ld-opt=OPTIONS              set additional linker options #包含連接庫的路徑和運行路徑
  --with-cpu-opt=CPU                build for the specified CPU, valid values:pentium, pentiumpro, pentium3, pentium4,athlon, opteron, sparc32, sparc64, ppc64 #指定編譯的CPU
 
  --without-pcre                    disable PCRE library usage #禁用pcre庫
  --with-pcre                        force PCRE library usage #啟用pcre庫
  --with-pcre=DIR                    set path to PCRE library sources #指向pcre庫文件目錄
  --with-pcre-opt=OPTIONS            set additional build options for PCRE #在編譯時為pcre庫設置附加參數
  --with-pcre-jit                    build PCRE with JIT compilation support
 
  --with-md5=DIR                    set path to md5 library sources #指向md5庫文件目錄
  --with-md5-opt=OPTIONS            set additional build options for md5 #在編譯時為md5庫設置附加參數
  --with-md5-asm                    use md5 assembler sources #使用md5匯編源
 
  --with-sha1=DIR                    set path to sha1 library sources #指向sha1庫目錄
  --with-sha1-opt=OPTIONS            set additional build options for sha1 #在編譯時為sha1庫設置附加參數
  --with-sha1-asm                    use sha1 assembler sources #使用sha1匯編源
 
  --with-zlib=DIR                    set path to zlib library sources #指向zlib庫目錄
  --with-zlib-opt=OPTIONS            set additional build options for zlib #在編譯時為zlib設置附加參數
  --with-zlib-asm=CPU                use zlib assembler sources optimized for the specified CPU, valid values: pentium, pentiumpro #為指定的CPU使用zlib匯編源進行優化
 
  --with-libatomic                  force libatomic_ops library usage # 為原子內存的更新操作的實現提供一個架構
  --with-libatomic=DIR              set path to libatomic_ops library sources #指向libatomic_ops安裝目錄
 
  --with-openssl=DIR                set path to OpenSSL library sources #指向openssl安裝目錄
  --with-openssl-opt=OPTIONS        set additional build options for OpenSSL #在編譯時為openssl設置附加參數
 
  --with-debug                      enable debug logging #啟用debug日志

6,編譯匯總
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

7,編譯安裝
  編譯
  make
  安裝
  make install
  加入PATH 
  ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/nginx
  核查版本信息
123456 nginx -V
nginx version: nginx/1.10.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-pcre

8,簡單配置
我這次主要使用到tcp四層負載,后續可能涉及到https http2等,所以編譯時添加了那些參數。
nginx.conf配置如下:
user  www www;
worker_processes  auto;
worker_cpu_affinity auto;
error_log  logs/error.log  error;
pid        logs/nginx.pid;
worker_rlimit_nofile 653600;
events
{
  use epoll;
  worker_connections 655350;
}
stream {
    upstream server {
        hash $remote_addr consistent;
        server 172.16.1.11:8081 weight=1 max_fails=3 fail_timeout=10s;
        server 172.16.1.22:8081 weight=1 max_fails=3 fail_timeout=10s;
    }
    server {
        listen 8081;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass server;
    }
}

CentOS 7.2下編譯安裝PHP7.0.10+MySQL5.7.14+Nginx1.10.1  http://www.nmzech.live/Linux/2016-09/134804.htm

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服務器全過程 http://www.nmzech.live/Linux/2013-09/89692.htm

CentOS 6.3下Nginx性能調優 http://www.nmzech.live/Linux/2013-09/89656.htm

CentOS 6.3下配置Nginx加載ngx_pagespeed模塊 http://www.nmzech.live/Linux/2013-09/89657.htm

CentOS 6.4安裝配置Nginx+Pcre+php-fpm http://www.nmzech.live/Linux/2013-08/88984.htm

Nginx安裝配置使用詳細筆記 http://www.nmzech.live/Linux/2014-07/104499.htm

Nginx日志過濾 使用ngx_log_if不記錄特定日志 http://www.nmzech.live/Linux/2014-07/104686.htm

Nginx的500,502,504錯誤解決方法 http://www.nmzech.live/Linux/2015-03/115507.htm

CentOS 7 編譯安裝Nginx1.10.2 腳本啟動失敗解決思路 http://www.nmzech.live/Linux/2017-01/139794.htm

Nginx 的詳細介紹請點這里
Nginx 的下載地址請點這里

本文永久更新鏈接地址http://www.nmzech.live/Linux/2017-01/139965.htm

linux
相關資訊       Nginx安裝配置  Nginx1.10.2 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
北京快乐8走势图彩客网