Nginx安裝及配置詳解

神諭丶發表於2015-01-04
  • 安裝。
    (我的環境是centos 6.5)
    首先保證編譯環境:
    yum -y install gcc gcc-c++ automake autoconf libtool make 

   然後需要安裝
pcre、zlib、openssl。如果有,就不需要安裝。(可能可以透過yum安裝,暫未試過)
  三者安裝方式基本一致,下載原始碼解壓,configure然後make && make install即可,此處不贅述
  附網址:
  pcre-8.30.tar.gz
  

  zlib-1.2.8.tar.gz
  

  openssl-1.0.2a.tar.gz
  
 
    安裝nginx:
    tar zxvf nginx-x.x.xx.tar.gz
    cd nginx-x.x.xx
    ./configure   (如果不指定任何引數,會被預設安裝到/usr/local/nginx下)
     安裝時需要提供pcre庫的地址,只需要--with-pcre=就可以解決,否則會報錯。
    
    然後

    make && make install


當然configure指令碼是支援很多選項的,接下來將對其的選項一一做出分析。

--prefix=        nginx安裝路徑,若無,則預設為/usr/local/nginx
--sbin-path=        nginx可執行檔案安裝路徑,只能是安裝時指定,若無,則預設為/sbin/nginx
--conf-path=        在沒有給定-c選項下預設的nginx.conf的路徑,若無,則預設為/conf/nginx.conf
--pid-path=        在nginx.conf中沒有指定pid指令的情況下,預設的nginx.pid的路徑。若無,則預設為/logs>nginx.pid
--lock-path=        nginx.lock檔案的路徑
--error-log-path=        在nginx.conf中沒有指定error_log指令的情況下,預設的錯誤日誌的路徑。若無,則預設為/logs/error.log
--http-log-path=        在nginx.conf中沒有指定access_log指令的情況下,預設的訪問日誌的路徑。若無,則預設為/logs/access.log
--http-client-body-temp-path=PATH        指定http客戶端請求快取檔案存放目錄的路徑
--http-proxy-temp-path=PATH        指定http反向代理快取檔案存放目錄的路徑
--http_fastcgi-temp-path        指定hhtp FastCGI快取檔案存放目錄的路徑
--user=        在nginx.conf中沒有指定user指令的情況下,預設的nginx使用的使用者。若無,則預設為nobody
--group=        在nginx.conf中麼有指定user指令的情況下,預設的nginx使用的租。若無,則預設為nobody
--builddir=DIR        指定編譯的目錄
--add-module=PATH        新增一個在指定路徑中能找到的第三方模組



--with-rtsig_module        啟用rtsig模組
--with-select_module(--without-select_module)        允許或不允許開啟select模式,如果configure沒有找到更合適的模式,比如:kqueue(sun os)、epoll(linux kernel 2.6+)、rtsig(實時訊號)或/dev/poll(一種類似select的模式,底層實現與select基本相同,都是採用輪訓方法),select模式將是預設安裝模式。
--with-poll_module(--without-poll_module)        允許或不允許開啟poll模式,如果沒有更適合的模式,比如:kqueue(sun os)、epoll(linux kernel 2.6+),則可以開啟。
--with-http_ssl_module        開啟http ssl模組,使nginx可以支援https請求,這個模組需要已經安裝OPENSSL,在debian上是libssl。
--with-http_realip_module        啟用ngx_http_realip_module
--with-http_addition_module        啟用ngx_http_addition_module
--with-http_sub_module        啟用ngx_http_sub_module
--with-http_dav_module        啟用ngx_http_dav_module
--with-http_flv_module        啟用ngx_http_flv_module
--with-http_stub_status_module        啟用"server status"頁
--with-http_perl_module        啟用ngx_http_perl_module
--with-perl_modules_path=PATH        指定perl模組的路徑
--with-mail        啟用IMAP4/POP3/SMTP代理模組
--with-mail_ssl_module        啟用ngx_mail_ssl_module
--with-cc=PATH        指定c編譯器的路徑
--with-cpp=PATH        指定c前處理器的路徑

--with-cpu-opt=CPU        為特定的CPU編譯,有效的值包括:pentium、pentiumpro、pentium3、pentium4、athlon、opteron、amd64、sparc32、sparc64、ppc64
--with-pcre=DIR        指定PCRE庫原始碼的路徑
--with-pcre-opt=OPTIONS        設定PCRE的額外編譯選項
--with-md5=DIR        設定MD5庫的原始碼路徑
--with-md5-opt=OPTIONS        設定MD5庫的額外編譯選項
--with-md5-asm        使用MD5彙編原始碼
--with-sha1=DIR        設定SHA1庫的原始碼路徑
--with-sha1-opt=OPTIONS        設定SHA1庫的額外編譯選項
--with-sha1-asm        使用SHA1庫的彙編原始碼
--with-zlib=DIR        設定zlib庫的原始碼路徑
--with-zlib-opt=OPTIONS        設定zlib庫的額外編譯選項
--with-zlib-asm=CPU        zlib針對CPU的最佳化,有效的值包括:pentiu、pentiumpro
--with-openssl=DIR        設定OPENSSL庫的原始碼路徑
--with-openssl-opt=OPTIONS        設定OPENSSL庫的額外編譯選項
--with-debug        啟用除錯日誌


--without-http        禁用http server
--without-http_charset_module        禁用ngx_http_charset_module
--without-http_gzip_module        禁用ngx_http_gzip_module,如要啟用,需要zlib
--without-http_ssi_module        禁用ngx_http_ssi_module
--without-http_userid_module        禁用ngx_http_userid_module
--without-http_access_module        禁用ngx_http_access_module
--without-http_auth_basic_module        禁用ngx_http_auth_basic_module
--without-http_autoindex_module        禁用ngx_http_autoindex_module
--without-http_geo_module        禁用ngx_http_geo_module
--without-http_map_module        禁用ngx_http_map_module
--without-http_referer_module        禁用ngx_http_referer_module
--without-http_rewrite_module        禁用ngx_http_rewrite_module,如果啟用,需要PCRE
--without-http_proxy_module        禁用ngx_http_proxy_module
--without-http_fastcgi_module        禁用ngx_http_fastcgi_module
--without-http_memcached_module        禁用ngx_http_memcached_module
--without-http_limit_zone_module        禁用ngx_http_limit_zone_module
--without-http_empty_gif_module        禁用ngx_http_empty_gif_module
--without-http_browser_module        禁用ngx_http_browser_module
--without-http_upstream_ip_hash_module        禁用ngx_http_upstream_ip_hash_module
--without-pcre        禁止PCRE庫的使用,同時也會禁止HTTP rewrite模組,在"location"配置指令中的正規表示式也需要PCRE


在不同的版本之間,選項可能有一些變化,請使用./configure --help命令來檢查當前的選項列表。






  • nginx.conf配置。

【code  3-1】
#    使用的使用者和組
user    www    www;
#    指定工作衍生程式數(一般等於cpu總核數的兩倍,例如兩個四核CPU,則總核數為8)
worker_processes 8;
#    指定錯誤日誌存放路徑,錯誤日誌記錄級別可選項為:[    debug    |    info    |    notice    |    warn    |    error    |    crit    ]
error_log    /data1/logs/nginx_error.log    crit;
#    指定pid存放的路徑
pid    /usr/local/webserver/nginx/nginx.pid;
#    指定檔案描述符數量
worker_rlimit_nofile    51200;

events
{
    #    使用的網路I/O模型,linux系統推薦採用epoll模型,FreeBSD系統推薦採用kqueue模型
    use epoll;
    #    允許的連線數
    worker_connections 51200;
}

http
{
    include     mime.types;
    default_type     application/octet-stream;
    #     設定使用的字符集,如果一個網站有多種字符集,請不要隨便設定,應讓程式設計師在html程式碼中透過meta標籤設定
    #     charset gb2313;
     
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers  4 32k;

    #設定客戶端能夠上傳的檔案大小
    client_max_body_size     8m;

    sendfile on;
    tcp_nopush on;

    keepalive_timeout 60;
     
    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

    #    開啟gzip壓縮
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types    text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    #    limit_zone crawler $binary_remote_addr 10m;

    server
    { 
        listen    80;
        server_name      yourdomain.com;
        index    index.html    index.htm;
        root    /data0/htdocs;
        
        # limit_conn    crawler    20;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires    30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires    1h;
        }

        log_format access ' $remote_addr - $remote_user [$time_local] "$request" '
                        ' $status $body_bytes_sent "$http_referer" '
                        ' "$http_user_agent" $http_x_forwarded_for ';
        access_log    /data1/logs/access.log    access;
    }
}

透過上述nginx.conf配置檔案示例,可以看出nginx.conf配置檔案結構主要由以下部分組成:

【code 3-2】
……
events
{
……
}

http
{
……
    server
    {
    ……
    }

    server
    {
    ……
    }
……
}


以上內容部分摘自並整理於——
實戰Nginx:取代Apache的高效能web伺服器


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1389042/,如需轉載,請註明出處,否則將追究法律責任。

相關文章