1. 程式人生 > 實用技巧 >2020-10-26未命名檔案

2020-10-26未命名檔案

2020-10-26未命名檔案

新建

歡迎來到 來到大浪濤天的部落格

一、Nginx Web服務及負載的各項應用

1. Nginx的介紹及安裝部署

1-1. Nginx的介紹:

Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好的。Nginx的特點有如下:

  1. 支援高併發,消耗記憶體資源少

  2. 具有多種功能
    網站web服務功能 --- apache
    網站負載均衡功能 --- LVS
    網站快取服務 --- Squid

  3. 在多種系統平臺都可以進行部署

  4. nginx實現網路通訊時使用的時非同步網路IO模型: epoll模型(apache -- select模型)
    epoll模型:
    宿舍管理員: 找人,檢視人員登記資訊
    幼兒園阿姨: 小朋友上廁所, 都站在教室的某個位置

    select模型:
    宿舍管理員: 找人,一個一個屋子去問, --線性輪詢
    幼兒園阿姨: 小朋友上廁所, 一個一個小朋友去詢問

1-2. Nginx的安裝

Nginx有yum和編譯兩種安裝方式,比較推薦官方源的yum安裝,因為官方源安裝的Nginx版本比較新,而且開啟的功能比較齊全,目錄比較規範,當然也可以根據需要進行編譯安裝。

1-2-1. Nginx的官方源yum安裝方式:

  1. 安裝yum工具
yum install yum-utils
  1. 在/etc/yum.repos.d/目錄下編輯nginx.repo檔案
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  1. 直接載入並安裝Nginx
yum makecache
yum install -y nginx

1-2-2. Nginx的編譯安裝

  1. 下載Nginx的原始碼包
[root@web2 src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
  1. 編譯原始碼
./configure --prefix=/opt/application --user=nginx --group=nginx 
  1. 進行安裝
make -j 4
make install 

1-3. Nginx的配置

1-3-1. Nginx的配置詳解

1-3-1-1. Nginx的日誌滾動(logrotate)

Nginx的訪問日誌會記錄很多東西,因此需要定時切割,不然日誌太大了不容易進行管理,系統預設對Nginx的日誌進行切割的軟體是logrotate,對於切割的配置檔案詳解如:

[root@web1 nginx]# cat /etc/logrotate.conf 
# see "man logrotate" for details
# rotate log files weekly
weekly       預設按周進行切割

# keep 4 weeks worth of backlogs
rotate 4     預設儲存4個檔案

# create new (empty) log files after rotating old ones
create       切割後預設建立一個新的檔案

# use date as a suffix of the rotated file
dateext       定義角標(副檔名稱資訊)

# uncomment this if you want your log files compressed
#compress     是否對切割後的檔案進行壓縮

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d    包含的子配置檔案

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly           
    create 0664 root utmp    切割完成後的許可權設定,root為屬主,utmp為屬組
        minsize 1M             最小的尺寸,必須到達這個尺寸才能進行切割處理
    rotate 1                 只保留一份備份
}

1-3-2. 關於Nginx的配置檔案

  1. 配置檔案路徑:
/var/log/nginx 日誌檔案
/usr/bin/nginx  nginx命令檔案
/usr/share/nginx/html  資源存放目錄,站點目錄
  1. 配置檔案詳解:
[root@web1 nginx]# cat nginx.conf.bak 
第一部分,主區域配置
user  nginx;        定義worker程序管理的使用者
master process:     主程序,管理服務是否能正常執行,boss角色
worker process:    工作程序,處理使用者的訪問請求,類似於員工

worker_processes  1;    定義有幾個work程序,越多代表同時間的併發力更強,                                                                   最好等於cpu的核數或者核數的2倍
error_log  /var/log/nginx/error.log warn;     定義錯誤日誌
pid        /var/run/nginx.pid;                定義pid路徑資訊,如果存在則代表服務起來了

第二部分,配置檔案事件區域
events {
    worker_connections  1024;                   定義一個work程序一個時間點內能接受1024個請求
}
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        on;
    keepalive_timeout  65;                            定義超時時間
    include /etc/nginx/conf.d/*.conf;
}


定義站點配置檔案

[root@web1 conf.d]# egrep -v "$^|#" default.conf >default.conf.bak
[root@web1 conf.d]# 
[root@web1 conf.d]# cat default.conf.bak 
server {             server區,一個區代表一個虛擬主機
    listen       80;    指定監聽的埠
    server_name  localhost;  監聽網站的域名
    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;
    }
}