天天看點

Nginx配置

1、環境

Centos6

軟體包安裝:

[root@test /]#yum -y install gcc openssl-devel zlib-devel pcre-devel

說明:pcre庫是為了使Nginx支援HTTP Rewrite子產品

2、開始安裝Nginx

  預設情況下,經過編譯安裝的Nginx 包含了大部分可用子產品。可以通過“./configure --help”選項設定各個子產品的使用情況,對不需要的http_ssi子產品,通過“--without-http_ssi_module”方式關閉。如果需要“http_perl”子產品,通過“--with-http_perl_module”方式進行安裝。

[root@test /]# cd /soft

[root@test soft]# ls

nginx-1.2.7.tar.gz

[root@test soft]# tar -xzvf nginx-1.2.7.tar.gz

[root@test soft]# ls

nginx-1.2.7  nginx-1.2.7.tar.gz

[root@test soft]# ln -s nginx-1.2.7 nginx

nginx  nginx-1.2.7  nginx-1.2.7.tar.gz

[root@test soft]# cd nginx

[root@test nginx]# ls

auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src

[root@test nginx]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module

[root@test nginx]# make

[root@test nginx]# make install

說明:在configure選項中,“--weith-http_stub_status_module”用來啟用Nginx的NginxStatus功能,以監控Nginx的目前狀态。

3、Nginx配置檔案的結構

  Nginx 的配置檔案是一個純文字檔案,位于Nginx 安裝目錄conf 目錄下,整個配置檔案是以block 的形式組織的。每個block 一般以一個大括号“{}”來表示,block

可以分為幾個層次,整個配置檔案中main 指令位于最高層,在main 層下面可以有Events、HTTP 等層級,而HTTP 層中又包含有server 層,即server block,server block 又可分為location 層,并且一個server block 中可以包含多個location block。

Nginx配置

4、配置與調試Nginx

    Nginx的配置路徑為/usr/local/nginx/conf,其中nginx.conf為Nginx的主配置檔案。

    Nginx的配置檔案主要分為4部分:main(全局設定)、server(主機設定)、upstream(負載均衡伺服器設定)和location(URL比對特定位置的設定)。main部分設定的指令将影響其它所有設定;server部分的指令主要用于指定主機和端口;upstream指令主要用于負載均衡,設定一系列的後端伺服器;location部分用于比對網頁位置。

    關系:server繼承main,location繼承server,upstream既不會內建其它設定也不會被繼承。

    在這4 個部分當中,每個部分都包含若幹指令,這些指令主要包含Nginx 的主子產品指令、事件子產品指令、HTTP核心子產品指令。同時每個部分還可以使用其他HTTP 子產品 指令,例如Http SSL 子產品、Http Gzip Static 子產品和Http Addition 子產品等。

    通過配置Nginx執行個體,介紹nginx.conf指令的含義。

    1、Nginx的全局配置

     Nginx的全局屬性配置:

      user  nobody  nobody;

#主子產品指令,指定Nginx Worker程序運作使用者以及使用者組,預設nobody運作

      worker_processes   1;

#主子產品指令,指定Nginx開啟的程序數

      error_log   logs/error.log   notice;

#主子產品指令,定義全局錯誤日志檔案。日志輸出級别有debug、info、notice、warn、error、crit,其中,debug輸出日志最詳細,而crit輸出日志最少

      pid            logs/nginx.pid;

#主子產品指令,指定程序id的存儲檔案位置

      worker_rlimit_nofile     65536;

#綁定worker程序和CPU

       events{

#events指令用來設定Nginx的工作模式及連接配接數上限

                   use  epoll;

#use是個事件子產品指令,指定Nginx的工作模式。Nginx支援工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll是标準的工作模式,kqueue和epoll是高效的工作模式,epoll用在Linux平台,kqueue用在BSD平台。Linux平台,epoll工作模式是首選。

                   worker_connections    65536;

#worker是個事件子產品指令,定義Nginx每個程序的最大連接配接數,預設是1024。最大用戶端連接配接數由worker_processes和worker_connections決定,即max_client=worker_processes*worker_connections,作為反向代理時:max_client=worker_processes*worker_connections/4。程序最大連接配接數受Linux系統程序的最大打開檔案數限制,執行作業系統指令“ulimit -n 65536”後worker_connections設定才能生效

       }

       2、HTTP伺服器配置

      Nginx對HTTP伺服器的相關屬性的配置:

     http{

     include    mime.types;

#主子產品指令,實作對配置檔案所包含的檔案設定,可以減少主配置檔案的複雜度。

     default_type   application/octet-stream;

#屬于HTTP核心子產品指令,預設類型為二進制流

     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                                 '$status $body_bytes_sent "$http_referer" '

                                 ' "$http_user_agent" "$http_x_forwarded_for" ';

    access_log logs/access.log main;

#Nginx的HttpLog子產品指令,指定Nginx日志的輸出格式。main為日志輸出格式的名稱,可以在access_log指令中引用

     sendfiles       on;

#用于開啟高效檔案傳輸模式

     tcp_nopush   on;

#用來防止網絡阻塞

     keepalive_timeout   65;

#設定用戶端請求頭讀取逾時時間

     }

     3、HttpGzip子產品配置

     Nginx的HttpGzip子產品。這個子產品支援線上實時壓縮輸出資料流。檢視是否安裝此子產品:

     [root@test conf]# /usr/local/nginx/sbin/nginx -V

     gzip  on;

#設定開啟或者關閉gzip子產品,“gzip on”表示開啟gzip壓縮,實時壓縮輸出資料流

    4、server虛拟主機配置

     虛拟主機配置。

    server{

    listen      80;

#指定虛拟主機的伺服器端口

    server_name    192.168.1.119   test;

#指定IP位址或者域名,多個域名之間用空格分開

    charset    gb2312;

#設定網頁的預設編碼格式

     access_log    logs/test.access.log   main;

#指定此虛拟主機的通路日志存放路徑。main用于指定通路日志的輸出格式

          location / {

                        root web;

#root用于指定虛拟主機的網頁根目錄,目錄可以是相對路徑,也可以是絕對路徑

                        index index.html index.htm;

#index用于設定通路的預設首頁位址

          }

          error_page  404   /404.html;

#定制各種錯誤資訊的傳回頁面

          error_page 500 502 503 504   /50x.html;

          location = /50x.html {

                     root  html;

     5、URL比對配置

     URL位址比對是Nginx配置中最靈活的部分。location支援正規表達式比對,也支援條件比對,可以通過location指令實作Nginx對動、靜态網頁的過濾處理。

     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

                           root html;      

                           expires  30d;

                   }

#這段是通過location指令對網頁URL進行分析處理,所有擴充名.gif、.jpg、.jpeg 、.png、 .bmp 、.swf的靜态檔案都交給Nginx處理,而expires指定靜态檔案的過期時間

      location ~ ^/(upload|html)/ {

                          root web;

                          expires 30d;      

                     }

#這段設定是将upload和html下的所有檔案都交給Nginx處理,upload和html目錄包含在web目錄中

      location ~ .*.jsp$ {

                                index index.jsp;

                                proxy_pass http://localhost:8080;

                    }

#這段設定中,location是對此虛拟主機下動态網頁的過濾處理,将所有以.jsp為字尾的檔案都交給本機的8080端口處理

5、Nginx啟動、關閉和重新開機

     1、Nginx基本資訊檢查

      檢查Nginx配置檔案的正确性

      /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

#“-t”參數用于檢查配置檔案是否正确,但不執行,“-c”參數用于指定配置檔案路徑

     2、顯示Nginx的版本以及編譯資訊

     /usr/local/nginx/sbin/nginx -v

#顯示安裝Nginx的版本資訊

    /usr/local/nginx/sbin/nginx -V

上一篇: nginx 配置
下一篇: nginx配置

繼續閱讀