1. 程式人生 > >Nginx快速入門視頻課程——筆記

Nginx快速入門視頻課程——筆記

源代碼 eve location 資源 ins 虛擬主機目錄 安裝nginx .sh cal

視頻課程鏈接:http://edu.51cto.com/course/14606.html

Nginx,主講:湯小洋

一、Nginx簡介

1. Nginx是什麽?

? Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器

? Nginx可以作為一個Web服務器進行網站的發布,也可以作為反向代理服務器進行負載均衡的實現

? 常見的Web服務器:Tomcat、Apache、Nginx、Weblogic等

2. 特點

? 占用內存少、並發能力強

二、搭建Nginx環境

1.安裝nginx

? 兩種方式:

  • 源代碼安裝:需要編譯 ./configure ——> make ——> make install
  • 在線安裝,參考:http://nginx.org/en/linux_packages.html

? 在線安裝:

  1. 下載nginx認證文件,並添加到apt-key中

    sudo apt-key add nginx_signing.key
  2. 配置apt源,添加nginx軟件源

    sudo vi /etc/apt/sources.list
    deb http://nginx.org/packages/ubuntu/ trusty nginx
    deb-src http://nginx.org/packages/ubuntu/ trusty nginx
  3. 更新apt軟件源,並安裝nginx

    sudo apt-get update
    sudo apt-get install nginx
  4. 訪問測試

    http://ip地址

    註:Nginx默認使用的是80端口

    2. 目錄結構

    ?執行whereis nginx查看

    ?命令程序:

  • /usr/sbin/nginx

? 配置文件:

  • /etc/nginx/nginx.conf

? 日誌目錄:

  • /var/log/nginx/

? 默認虛擬主機目錄:

  • /usr/share/nginx/html

3. 相關命令

netstat -ntpl | grep 80  #查看進程信息
ps aux | grep ntinx

sudo nginx  #啟動
sudo nginx -s stop  #停止
sudo nginx -s reload  #重啟
sudo nginx -c /etc/nginx/nginx.conf  #使用指定的配置文件啟動
sudo nginx -t # 測試配置文件是否有錯誤
sudo nginx -v  #查看版本信息 

4. 關於配置文件

? 主配置文件nginx.conf,包含三部分內容:全局配置、工作模式配置、HTTP配置

#運行nginx的用戶
user  nginx;
#工作進程的數量,可以根據CPU的核心總數來設置
worker_processes  4;

#錯誤日誌文件的位置及輸出級別
error_log  /var/log/nginx/error.log warn;
#PID文件的位置
pid        /var/run/nginx.pid;

#工作模式配置
events {
    #每個進程最大處理的連接數
    worker_connections  10000;
}

#HTTP配置
http {
    #支持的媒體類型
    include       /etc/nginx/mime.types;
    #默認的類型
    default_type  application/octet-stream;

    #日誌格式
    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  /var/log/nginx/access.log  main;

    #是否調用sendfile函數來輸出文件
    sendfile        on;
    #tcp_nopush     on;

    #連接超時時間
    keepalive_timeout  65;

    #開啟gzip壓縮
    #gzip  on;

    #引入外部配置文件,包含虛擬主機的配置
    include /etc/nginx/conf.d/*.conf;
}

? 虛擬主機配置文件/etc/nginx/conf.d/default.conf,可以定義多個虛擬主機配置文件

#虛擬主機的配置
server {
    #監聽端口
    listen       80;
    #服務器域名
    server_name  localhost;

    #網頁的默認編碼
    #charset koi8-r;
    #訪問該虛擬主機的日誌位置
    #access_log  /var/log/nginx/host.access.log  main;

    #根據目錄配置
    location / {
        #網站根目錄的配置
        root   /usr/share/nginx/html;
        #默認首頁
        index  index.html index.htm;
    }

    #錯誤的反饋頁面
    error_page   500 502 503 504  /50x.html;
    #錯誤頁面的配置
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

? 將原配置文件備份,養成數據備份的習慣

三、HTTP服務器

1. 簡介

? 虛擬主機:把一臺物理服務器劃分為多個虛擬的服務器,稱為虛擬主機

? 每個虛擬主機對應一個Web站點,其實就是在一臺服務器上搭建多個網站

2. 虛擬主機

? 步驟:

  1. 準備網站目錄及測試頁面

    mkdir www
    cd www
    mkdir ums
    mkdir sms
    echo welcome to ums > ums/index.html
    echo welcome to sms > sms/index.html
  2. 創建虛擬主機配置文件並配置

    cd /etc/nginx/conf.d/
    sudo cp default.conf ums.conf
    sudo cp default.conf sms.conf
    sudo vi ums.conf
    server {
         listen       80;
         server_name  www.ums.com;
    
         location / {
             root   /home/soft01/www/ums;
             index  index.html index.htm;
         }
     }
    sudo vi sms.conf
    server {
         listen       80;
         server_name  www.sms.com;
    
         location / {
             root   /home/soft01/www/sms;
             index  index.html index.htm;
         }
     }

    實現虛擬主機的三種方式:

    • 基於不同的IP
    • 基於不同的端口
    • 基於不同的域名
  3. 配置域名解析

    在客戶端主機中配置域名解析

    windows:C:\Windows\System32\drivers\etc\hosts

    Linux/Mac:/etc/hosts

    192.168.1.59 www.ums.com
    192.168.1.59 www.sms.com

    域名解析的過程:查找hosts文件——>DNS

    註:該方式僅是本地測試時使用的,實際應用中要購買註冊域名

3. 作為圖片服務器

? 使用Nginx作為圖片服務器:

  • 上傳:使用ftp或sftp上傳圖片到服務器指定的ftp目錄下
  • 下載:通過訪問Nginx服務器來訪問ftp目錄下的圖片文件,即使用HTTP請求來訪問資源文件,而不是通過FTP請求

? 步驟:

  1. 創建存放圖片的文件夾,並上傳圖片到該目錄中

    mkdir /home/soft01/www/images
  2. 配置Nginx

    sudo vi /etc/nginx/conf.d/default.conf
     location /images {
           root   /home/soft01/www;
           autoindex on; #打開目錄瀏覽功能
       }

    訪問url:http://ip/images 實際物理路徑:/home/soft01/www/images

  3. 訪問

    http://ip/images/xxx.img

    /home/soft01

四、反向代理

1. 簡介

  1. 正常請求

    客戶端發送請求到服務器,服務器接收請求並響應數據

  2. 正向代理

    概念:位於客戶端和原始服務器之間的服務器,為了從原始服務器獲取數據,客戶端向代理服務器發送請求並指定請求目標(原始服務器),然後代理服務器將請求轉換給原始服務器,並將響應的數據返回給客戶端

    正向代理是客戶端使用的,對客戶端進行代理,客戶端知道並主動使用代理

    技術分享圖片

    ?

    作用:

    • 訪問原來無法訪問的資源(google、fackbook等),×××
    • 可以做緩存,加速資源的訪問
    • 對客戶端上網進行認證授權
    • 上網行為管理,記錄用戶訪問記錄,對外隱藏用戶信息
  3. 反向代理

    概念:客戶端發送請求到服務器(客戶端認為是原始服務器,實際上是一臺反向服務器),反向代理服務器接收請求並將請求轉發給內部網絡中的多臺集群服務器,並將響應的數據返回給客戶端

    反向代理一般用於服務器集群、分布式等,實現負載均衡

    作用:

    • 負載均衡,提高處理和響應速度
    • 保證內網的安全,隱藏服務器信息,防止Web×××

    技術分享圖片

2. 配置

? 使用Nginx作為其他服務器

? 步驟:

  1. 創建虛擬主機配置文件,並配置反向代理

    scd /etc/nginx/conf.d
    sudo cp default.conf proxy.conf
    sudo vi proxy.conf
    #後臺服務器列表
     upstream tomcat_server{
         server 192.168.1.66:8080;
     }
    
     server {
         listen       80;
         server_name  www.tomcat.com;
    
         location / {
             proxy_pass http://tomcat_server;  #指定代理的後臺服務器
         }
     }
  2. 配置域名解析

  3. 訪問

    http://tomcat.com

五、負載均衡

1. 簡介

? 概念:將接收到的請求按照一定的規則分發到不同的服務器進行處理,從而提高系統響應和處理速度,稱為負載均衡

2. 配置

? 步驟:

  1. 準備網站(模擬淘寶,後面有多臺服務器)

    #拷貝兩個tomcat
    cp -r apache-tomcat-8.5.30 taobao1
    cp -r apache-tomcat-8.5.30 taobao2
    #修改tomcat端口
    vi taobao1/conf/server.xml
    vi taobao2/conf/server.xml
    #修改頁面
    vi taobao1/webapps/ROOT/index.jsp
    vi taobao2/webapps/ROOT/index.jsp
    #啟動tomcat
    ./startup.sh
  2. 創建虛擬主機配置文件,並配置負載均衡

    sudo cp proxy.conf taobao.conf
    sudo vi taobao.conf
    #後臺服務器列表
     upstream taobao_server{
         server 192.168.1.66:8081 weight=3; #weight表示權重,權重越高被分配到的幾率越大
         server 192.168.1.66:8082 weight=7;
     }
    
     server {
         listen       80;
         server_name  www.taobao.com;
    
         location / {
             proxy_pass http://taobao_server;  #指定代理的後臺服務器
         }
     }

    ?

六、動靜分離

1. 簡介

? 問題:tomcat在處理靜態資源時效率不高,默認情況下所有資源都由tomcat處理,會導致Web應用響應慢,占用系統資源

? 解決:將靜態資源交由Nginx處理,動態資源仍由tomcat處理,實現動靜分離

? 實際上就是把Nginx作為靜態資源服務器

2. 配置

? 步驟:

  1. 編輯taobao.conf,配置動態分離

    sudo vi /etc/nginx/conf.d/taobao.conf
    #處理靜態資源
       location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff) {
           root /home/soft01/www/static;
       }
  2. 創建存放靜態資源的文件夾,並將資源資源放到該目錄中

    cd /home/soft01/www
    mkdir static
    cd static
    chmod 777 *
    cd /home/soft01/software/taobao1/webapp/ROOT
    cp tomcat.css tomcat.png  /home/soft01/www/static

? 高並發的處理:

  • 負載均衡:集群
  • 動靜分離:使用Nginx、CDN
  • 緩存:以空間換時間,提高系統效率
  • 限流:流量控制
  • 降級:服務降載

Nginx快速入門視頻課程——筆記