2020-10-26未命名檔案
阿新 • • 發佈:2020-10-29
2020-10-26未命名檔案
新建歡迎來到 來到大浪濤天的部落格 !
一、Nginx Web服務及負載的各項應用
1. Nginx的介紹及安裝部署
1-1. Nginx的介紹:
Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好的。Nginx的特點有如下:
-
支援高併發,消耗記憶體資源少
-
具有多種功能
網站web服務功能 --- apache
網站負載均衡功能 --- LVS
網站快取服務 --- Squid -
在多種系統平臺都可以進行部署
-
nginx實現網路通訊時使用的時非同步網路IO模型: epoll模型(apache -- select模型)
epoll模型:
宿舍管理員: 找人,檢視人員登記資訊
幼兒園阿姨: 小朋友上廁所, 都站在教室的某個位置select模型:
宿舍管理員: 找人,一個一個屋子去問, --線性輪詢
幼兒園阿姨: 小朋友上廁所, 一個一個小朋友去詢問
1-2. Nginx的安裝
Nginx有yum和編譯兩種安裝方式,比較推薦官方源的yum安裝,因為官方源安裝的Nginx版本比較新,而且開啟的功能比較齊全,目錄比較規範,當然也可以根據需要進行編譯安裝。
1-2-1. Nginx的官方源yum安裝方式:
- 安裝yum工具
yum install yum-utils
- 在/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
- 直接載入並安裝Nginx
yum makecache
yum install -y nginx
1-2-2. Nginx的編譯安裝
- 下載Nginx的原始碼包
[root@web2 src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
- 編譯原始碼
./configure --prefix=/opt/application --user=nginx --group=nginx
- 進行安裝
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的配置檔案
- 配置檔案路徑:
/var/log/nginx 日誌檔案
/usr/bin/nginx nginx命令檔案
/usr/share/nginx/html 資源存放目錄,站點目錄
- 配置檔案詳解:
[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;
}
}