Nginx 配置

Nginx與服務器集羣

一.集羣

1. 什麼是集羣

   :合在一塊兒 放在一塊兒php

  一堆 不少css

  服務器架構集羣:多臺服務器組成的響應大併發,高數據量的架構體系。html

  分佈式服務器架構java

  特色:mysql

  (1)成本高linux

  (2)可以下降單臺服務器的壓力,使用流量平均分配到多臺服務器nginx

  (3)使網站服務架構更加安全穩定web

  服務器概念: 提供某種或多種服務(功能)的機器(計算機)redis

  (1)硬件 性能比較好的電腦主機sql

  (2)軟件 實現各類服務支持的協議的軟件

1.1 web服務軟件

  提供http https協議的服務器。網站網頁訪問的功能

  Apache 老牌的服務器軟件,功能多而且穩定  ,支持多種配置,lamp

  Nginx 安裝簡單小巧,併發量高,web服務器,代理服務器,郵箱服務器

  lls 微軟公司,APS腳本使用,能夠經過fast-cgi(網絡接口服務)的方式使用PHP

  Lighttpd 德國開發的軟件,小巧,提供web服務支持

1.2 數據庫

  關係型數據庫(RDBMS):

    Mysql mysqlab => sun(java) => Oracle

    Mariadb mysql的一個分支

    Postgresql 加州伯克利大學,學院派

    Oracle 大型商業數據庫

    Sqlserver 微軟數據庫

    DB2 IBM

    Sqllite3 手機端(iOS和安卓)使用

  非關係型數據庫

    Memcached

    Redis

    Mongodb

1.3 負載均衡

  負載均衡服務器,分發請求到不一樣的服務器。使流量平均分配。

  服務器死機,稱爲宕(dang)機

  硬件級別 性能好,價格高

  軟件級別 性價比高

  Lvs linux下分發軟件

  Nginx upstream功能分發

1.4 資源服務器

  資源服務器存儲靜態資源,css,js,圖片,視頻..。通常此服務器會有硬板(ssd)讀寫快速,帶寬更大。

1.5 反向代理

  反向代理服務器具備代理請求到對應的服務器的功能,也具備緩存的功能

  代理服務器:

  好比a須要訪問c,可是a不能直接訪問c。

  (1)b能夠訪問c,a能夠訪問b

  (2)a告訴b幫忙訪問一下c,把c的數據返回給a

  Spuid :

  Varnish :

  Nginx :

1.6 高可用

  高可用服務器,用來監控負載均衡服務器,若是一旦負載均衡宕機,會接替負載均衡服務器的工做,繼續進行網絡分發的工做。能夠認爲是負載均衡的備用服務器

  Hearbit 心臟敲擊

  Keeplive 保持

1.7 緩存軟件

  Memcached

  redis

1.8 cdn內容分發

   

  需求:

  網站服務器在北京

  用戶1:天津 --> 北京節點 用戶訪問CDN  服務器

  用戶2:杭州 --> 上海節點

  

二. Nginx服務器

1. Nginx概述

  Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。

  其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。

  Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

2. Nginx特色

  (1)熱部署:Nginx在修改配置文件以後,不須要重啓,重載操做

  (2)能夠高併發鏈接:相同配置的服務器,nginx比apache能接受的鏈接多得多

  (3)低的內存消耗:相同的服務器,nginx比apache低的消耗

  (4)處理響應請求很快:nginx處理靜態文件的時候,響應速度很快

  (5)具備很高的可靠性

3. Apache與Nginx服務器區別

  1)nginx和apache的軟件底層架構不同。

  (1)Nginx的併發要比Apache好不少。

  (2)Nginx屬於輕量級服務器軟件,Apache屬於重量級的軟件;

  (3)Nginx在處理靜態文件的效率要比Apache好不少,Apache在處理動態頁面效果要 比Nginx高

  (4)Apache在安全性要比Nginx要好。

  所以有一種不經常使用的組合:lnamp。LNMPA

  2)運行模式不一樣

  (1)Apache運行PHP是經過加載PHP5模塊運行。因爲是Apache去加載PHP5模塊, 因此每次修改了php.ini配置文件須要重啓Apache。

  (2)Nginx運行PHP是經過網絡鏈接php-fpm(fastCGI)方式運行.php-fpm是一個獨立的 軟件(默認端口:9000)。所以在Nginx下修改了php.ini配置文件須要重啓php-fpm

三. LNMP的安裝配置

  在以前的LAMP基礎上安裝,節省安裝Mysql時間

  因爲

  安裝Nginx+php和apache+php的使用方式不一樣,因此從新安裝php

  (1)軟件包和腳本上傳到服務器

  使用工具:FileZilla(https://filezilla-project.org/)

   

   

   

  (2)查看並執行install_nginx.sh腳本

  

  賦予腳本權限,並執行安裝腳本: chmod u+x install_*

  

  執行腳本:

   

 

 

   

   

1. Nginx配置文件詳解:

   

  

  配置文件路徑

  

  查看主配置文件

  

  查看文件有時可能不方便,可使用sftp工具鏈接文本編輯器進行設置查看

  

  

2. 設置工做進程數量

   

3. 單個進程的鏈接數(併發量)

   

4. 虛擬主機的配置

   

#user nobody;
worker_processes  1;    # 設置工做進程數量
events { worker_connections 1024;    # 單個進程的鏈接數(併發量)
} http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 負載均衡服務器配置
 upstream nginx { # ip_hash hash一致性讓同一個用戶訪問同一臺服務器(解決session丟失問題)
 ip_hash; # 192.168.174.130 分發到的服務器
        # weight 權重
        # max_fails 分發最大失敗次數
        # fail_timeout 失敗超時時間
        server 192.168.174.130:8080 weight=1 max_fails=3 fail_timeout=20s; server 192.168.174.131:8081 weight=1 max_fails=3 fail_timeout=20s; } # 配置解壓縮
 gzip on; # http的協議版本
    gzip_http_version = 1.0; # 若是是IE就關閉壓縮
    gzip_disable 'MSIE [1-6].'; # 須要壓縮的文件格式(不建議壓圖片能夠壓縮css,js)
    gzip_types image/jpeg; # 推薦6 壓縮級別(級別越高,壓的越小,越浪費CPU計算資源)
    #gzip_comp_level [1-9] 
    
    
    # 複製一個server端,建立一個新的虛擬機
 server { # 默認端口
        listen       80; # 域名解析
 server_name www.xfsec.com; # 網站根目錄
        root /home/xing/xing/project # 緩存圖片文件
        location ~ \.(jpeg|jpj|png)${ # 緩存時間爲1day
 expires 1d; } # 默認訪問頁
        location / { # 網站根目錄
            # root /home/xing/xing/project
            
            # 分發代理
            proxy_pass   http://nginx; index index.html index.htm } error_page 500 502 503 504  /50x.html; # 配置錯誤頁面
        location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000配置PHP服務
        location ~ \.php$ { # 使用最上層的root變量
            # root html;
            fastcgi_pass   127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 若是Apache和nginx的網站目錄是一個,Apache須要使用分佈式配置文件,開啓此項。
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #         #location ~ /\.ht {
        # deny all;
        #}
 } server { listen 8080; server_name localhost; location / { proxy_pass http://192.168.1.60; } error_page 500 502 503 504  /50x.html; location = /50x.html { root html; } } }

5.啓動nginx看看效果

   

  (1)啓動Nginx

  

  (2)解析域名,創建網站目錄並訪問:C:\Windows\System32\drivers\etc(hosts文件)

  

   

   

   

   

   

四.Nginx和PHP關聯

1. 安裝php-fpm

   

  ①查看修改腳本

   

   

   

   

   

  執行結果查看軟件目錄

   

   

   

  複製PHP相關配置文件

   

  啓動php-fpm

  

2. Nginx +PHP流程圖

   

3. Nginx.conf配置修改

  ①配置php服務的路徑

   

  ②測試配置文件並重載

   

  ③測試phpinfo文件

   

   

五.配置nginx expires緩存功能

1. Nginx 緩存功能概述

  Nginx經過配置,能夠告知瀏覽器,返回數據的有效時間,瀏覽器就能夠根據數據的有效時間,肯定是否應該到服務器請求,若是數據沒有超過有效期,就使用瀏覽器緩存的數據。

緩存功能開啓,是爲了用戶可以快速獲取使用到數據,能夠減小服務器請求,下降貸款壓力。

   

2. Nginx.conf詳細配置

   

  配置緩存選項

   

  上傳圖片,並測試訪問

   

   

  ③重載配置文件

   

   

六. Nginx的gzip壓縮設置

1. Nginx的gzip壓縮功能概述

  壓縮資源,經過網絡發送的大小就更加節省資源了,帶寬佔用變小,啓用壓縮機制,爲了可以快速訪問到資源。

  Web服務器進行壓縮,瀏覽器須要進行解壓操做。

  目前市場大部分瀏覽器是支持gzip壓縮的。

  IE6及之前不支持

2. Nginx.conf詳細配置

   

  配置文件參數保存以後,上傳配置文件

   

七.負載均衡的配置

1. 負載均衡原理圖

   

  此架構最少須要三臺服務器

  經過虛擬機克隆的方式,快速擁有多態虛擬機。

  負載均衡服務器nginx,

    192.168.174.126

  Web1

    192.168.174.130

  Web2

    192.168.174.131

   克隆虛擬機操做步驟:

  克隆虛注意擬機必須處於關機狀態

  

   

   

   

   

   

2. 實戰Nginx負載均衡服務器

  配置負載均衡服務器

  分發段配置

   

  

  訪問域名找虛擬主機,經過虛擬主機,代理到upstream,upstream分發到各web服務器

  Windows域名解析

   

  啓動各服務器

  負載均衡服務器只需啓動nginx,不在進行PHP解析

  Web服務器啓動nginx和php-fpm服務

   

  Web1服務器

   

  Web2服務器

   

  查看分發效果

  爲了可以看到分發效果,在web1和web2服務器頁面寫入不一樣的測試標識

  Web1

  [root@localhost 桌面]# vim/usr/local/nginx/html/php61/index.html

  <meta charset=」utf8」>

  Web2

  <h1>時間過得好快呀,又餓了</h1>

 

  Web2

  [root@localhost 桌面]# vim/usr/local/nginx/html/php61/index.html

  <meta charset=」utf8」>

  Web2

  <h1>時間過得好快呀,又餓了</h1>

3. SESSION丟失問題

  不一樣的服務器須要經過session判斷用戶的狀態。

  默認session存儲到服務器的硬盤文件中,不可以共享。

  session丟失會形成如下後果:

  1. 用戶狀態沒法判斷
  2. 驗證碼沒有辦法驗證,驗證碼的生成值和校驗的服務器不在一塊兒

  解決方案:

  1. 入庫 memcache mysql redis(推薦)
  2. 硬盤共享方式 磁盤共享方式
  3. ip_hash hash一致性讓同一個用戶訪問同一臺服務器
相關文章
相關標籤/搜索