nginx主配置文件的模塊介紹
全局塊:
全局塊是配置文件從開始到 events 塊之間的部分,其中指令的作用域是 Nginx 服務器全局。主要指令包括:
user:指定可以運行 Nginx 服務的用戶和用戶組,只能在全局塊配置。例如:user nobody;
?表示使用 nobody 用戶運行 Nginx 服務。
worker_processes
:指定工作線程數,可以設定具體的進程數,也可使用自動模式(如worker_processes auto;
?)。一般設為與 CPU 數量相同或 2 倍于 CPU 數量。
pid
:指定進程 pid 文件存放的路徑,例如:pid logs/nginx.pid;
error_log
:指定錯誤日志的路徑和日志級別。此指令可在全局塊、http 塊、server 塊以及 location 塊中配置。例如:error_log logs/error.log notice;
?表示錯誤日志存放在logs/error.log
,級別為 notice。
events 塊:
涉及的指令主要影響 Nginx 服務器與用戶的網絡連接,對服務器性能有較大影響,常用指令有:
accept_mutex
:開啟時,將對多個 Nginx 進程接收連接進行序列化,防止多個進程對連接的爭搶。默認是開啟狀態,只能在 events 塊中進行配置,例如:accept_mutex on;
multi_accept
:如果被禁止(multi_accept off;
?),Nginx 一個工作進程只能同時接受一個新連接;否則,一個工作進程可以同時接受所有新連接。若 Nginx 使用 kqueue 連接方法,此指令會被忽略。
use
:指定使用哪種網絡 I/O 模型,如use epoll;
?。可選擇的內容包括 select、poll、kqueue、epoll、rtsig、/dev/poll 以及 eventport 等,但一般操作系統并不支持所有模型。
worker_connections
:設置允許每一個 worker 進程同時開啟的最大連接數。例如:worker_connections 1024;
?需注意,這個值不能超過系統支持打開的最大文件數和單個進程支持打開的最大文件數。
http 塊:
是 Nginx 配置中的重要部分,可包含自己的全局塊、多個 server 塊,而 server 塊中又可進一步包含多個 location 塊。http 全局塊中可配置的指令包括:
include
:用于包含其他的配置文件,例如:include mime.types;
default_type
:設定默認文件類型,例如:default_type application/octet-stream;
sendfile
:開啟高效文件傳輸模式,例如:sendfile on;
keepalive_timeout
:設置客戶端連接保持活動的超時時間,例如:keepalive_timeout 65;
log_format
:自定義日志格式。
access_log
:配置 access_log 日志及存放路徑,并可使用上面定義的日志格式。
在 server 塊中,常用指令有:
listen
:配置監聽端口,例如:listen 80;
server_name
:配置服務名,例如:server_name localhost;
location
:用于匹配網頁位置,可進行各種請求處理的配置,例如指定根目錄、首頁文件等。
在 location 塊中,可以進一步細化對特定 URL 路徑的處理規則。
worker_processes 1;
工作進程數,設置成服務器內核的2倍(一般不超過8個,超過8個反而會降低性能4個1-2個)
處理進程的過程必然涉及配置文件和展示頁面,也就是涉及打開文件的數量
nginx默認打開文件數就是1024
vim /etc/security/limits.conf
進入編輯
soft bproc 65535
能打開的進程最大數的軟限制是65535,65535是最大數
hard nproc 65535
soft nofile
進程打開文件數的最大值65535
hrad nofile 65535
能打開的進程最大數的硬限制是65535
這個配置要生效只能重啟,這是系統初始化的一個環節。
面試題:
root和alias匹配工作之間的區別
root的匹配模式 拼接
root的工作目錄,訪問的是uri/102
location /xy102
/opt/test1
/opt/test1/xy102
alias也是指匹配nginx的根目錄 路徑是絕對路徑
location /xy102
alias /opt/test1/xy102/;
alias 只能寫在http模塊當中的server模塊的location模塊里面
root可以寫在server模塊,也可以在http,也可以在location中
alias匹配工作目錄,不能夠使用重定向功能
總結
全局模塊
work_processes 1; 指定進程數
events模塊決定了能夠處理的連接數
stream 四層代理模塊
http模塊
轉發和處理http請求,設置代理(正向代理,反向代理),緩存,定義日志格式,重定向配置。
在http模塊當中,包含:
server模塊 http里面可以有多個server模塊
在server模塊當中包含:
location模塊
在server模塊當中可以有多個location模塊
實驗
統計訪問狀態
vim nginx.conf
location /status {
stub_status on;
打開狀態統計的功能;
access_log off;
關閉status的訪問日志
}
然后nginx -t 查看一下語法是否有誤
沒有問題就重啟nginx
訪問頁面得出結果
Active connections:1
當前活動的連接數
server accepts handled requests
已經處理的連接數
36 36 36
三個數字從左往右:已經處理的連接次數,成功建立的連接次數 ,已經處理的請求數
Reading:0 writing:1 waiting:0
reading :標識服務端正在從客戶端請求讀取請求的數據
writing :表示服務端正在把響應數據發送給客戶端
waiting:表示有連接處于空閑狀態,等待新的請求
基于密碼的授權進行訪問控制
yum -y install httpd-tools httppasswd的工具,要先安裝
htpasswd -c /usr/local/nginx/passwd.db bmm
創建一個文件
進入nginx主配置文件里面
重啟
基于客戶端的訪問控制 ip地址來進行控制
添加一個控制規格
deny 192.168.124.10
allow all
20的主機不能訪問
其他的主機可以訪問。
基于域名的nginx主機
然后把ip地址和域名做一個映射
進入 /etc/hosts編輯
訪問www.xy102.com就相當于訪問192.168.124.10
多個域名的訪問
進入nginx主配置文件中在后面添加一個server模塊
基于ip地址的訪問
先創建一個虛擬網卡
然后進入nginx主配置文件中更改監聽ip地址
檢測語法錯誤然后重啟
基于端口實現多個虛擬主機
端口可以任意設置,但不能超過65535
多個配置文件
進入nginx主配置文件
在http模塊中添加
然后創建一個conf.d這個目錄,切換到這個目錄中,編輯一個test1.conf
然后創建這個兩個目錄
往兩個目錄中index.html寫入內容
查看這個目錄連接的端口