Nginx的安裝配置

1.安裝PCRE庫html

$ cd /usr/local/
$ https://sourceforge.net/projects/pcre/files/pcre/8.36/
$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make
$ make install

2.安裝zlib庫java

$ cd /usr/local/ 
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make
$ make install

3.安裝sslnginx

$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ ./config
$ make
$ make install

4.安裝nginx正則表達式

$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0  
$ ./configure --prefix=/usr/local/nginx 
$ make
$ make install

5.啓動算法

$ /usr/local/nginx/sbin/nginx
報錯 nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

32位系統後端

[root@localhost ~]#  ln -s /usr/local/lib/libpcre.so.1 /lib服務器

64位系統負載均衡

[root@localhost ~]#  ln -s /usr/local/lib/libpcre.so.1 /lib64測試

而後在啓動nginx就OK了url

6.重啓、中止、強制關閉

$ /usr/local/nginx/sbin/nginx –s reload 重啓
$ /usr/local/nginx/sbin/nginx –s stop   中止
$ /usr/local/nginx/sbin/nginx –t 測試配置文件是否正常
$ pkill nginx 強制關閉

七、配置

配置文件位於安裝目錄conf下

nginx/conf/nginx.conf

Nginx配置文件常見結構的從外到內依次是 http,server location等等,缺省的繼承關係從外到內,也就是說內層塊會自動獲取外層塊的值做爲缺省值。

  • Server

接收請求的服務器將不一樣請求按規則轉發到不一樣的後端服務器上,在nginx中能夠經過構建虛擬主機的概念來將這些不一樣的服務配置進行隔離。

server {
    listen       80;
    server_name  localhost;
    root   html;
    index  index.html index.htm;
}
  1. listen 指定監聽端口
  2. server_name 指定ip或域名
  3. index  設定訪問的默認首頁地址
  4. root  指定虛擬主機的網頁根目錄,這個地方能夠是相對地址或絕對地址

當server超過2個時,建議不一樣的虛擬主機的配置放在各自獨立的文件中,經過在主配置文件nginx.conf加上include指令包含近下來,便於管理。

include vhost/*.conf
  • Localtion

每一個url請求都會對應一個服務,nginx進行處理轉發或者是本地的一個文件路徑,或者是其它服務器的一個服務路徑,而這個路徑匹配時經過location來進行的。咱們快車將server當作對應一個域名進行的配置,而location是在一個域名下對更精細的路徑進行配置。

能夠將root和index指令放到一個location中,那麼只有在匹配到這個location時纔會訪問root後的內容

    location / {
        root   /data/www/host2;
        index  index.html index.htm;
    }
  1. location匹配規則
    ~  波浪線表示執行一個正則匹配,區分大小寫
    ~* 表示執行一個正則匹配,不區分大小寫
    ^~ 表示普通字符匹配,若是該選項匹配,只匹配該選項,不匹配別的選項,通常來匹配目錄
    = 進行普通字符精確匹配
  2. 匹配例子
    location  = / {
      # 只匹配"/".
      [ configuration A ] 
    }
    location  / {
      # 匹配任何請求,由於全部請求都是以"/"開始
      # 可是更長字符匹配或者正則表達式匹配會優先匹配
      [ configuration B ] 
    }
    location ^~ /images/ {
      # 匹配任何以 /images/ 開始的請求,並中止匹配 其它location
      [ configuration C ] 
    }
    location ~* \.(gif|jpg|jpeg)$ {
      # 匹配以 gif, jpg, or jpeg結尾的請求. 
      # 可是全部 /images/ 目錄的請求將由 [Configuration C]處理.   
      [ configuration D ] 
    }
    
    請求:
    / -> 符合configuration A
    /documents/document.html -> 符合configuration B
    /images/1.gif -> 符合configuration C
    /documents/1.jpg ->符合 configuration D
  3. 靜態文件映射

    訪問文件的配置主要有root和aliasp's兩個指令,這兩個指令的區別容易能混。

    alias後跟的指定目錄是精準的,而且末尾必須加/

        location /c/ {
            alias /a/;
        }

    若是訪問站點http://location/c訪問的就是/a/目錄下的站點信息

    root後跟的指定目錄是上級目錄,而且該上級目錄下要含有和location後指定名稱的同名目錄才行

        location /c/ {
            root /a/;
        }
    這時訪問站點http://location/c訪問的就是/a/c目錄下的站點信息。若是你須要將這個目錄展開,在這個location的末尾加上「autoindex on; 」就能夠了
  4. 轉發

    配置起來很簡單好比我要將全部的請求到轉移到真正提供服務的一臺機器的8001端口,只要這樣:

    location / {
        proxy_pass 172.16.1.1:8001;
    }
    這樣訪問host時,就都被轉發到 172.16.1.1的8001端口去了。
  5. 負載均衡

    在upstream中指定了一組機器,並將這個組命名爲myserver,這樣在proxy_pass中只要將請求轉義到myserver,這個upstream中咱們就實現了在四臺機器的反向代理加負載均衡。其中ip_hash指明瞭負載均衡是按ip地址進行分配,另外還有輪詢、指定權重輪詢、fail、url_hash幾種調度算法。

    upstream myserver; {
        ip_hash;    
        server 172.16.1.1:8001;
        server 172.16.1.2:8002;
        server 172.16.1.3;
        server 172.16.1.4;
    }
    location / {
        proxy_pass http://myserver;
    }
相關文章
相關標籤/搜索