nginx的配置:
1、全局塊:全局配置,對全局生效;
2、events塊:配置影響 Nginx 服務器與用戶的網絡連接;
3、http塊:配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置;
4、server塊:配置虛擬主機的相關參數,一個 http 塊中可以有多個 server 塊;
5、location塊:用于配置匹配的 uri ;
6、upstream:配置后端服務器具體地址,負載均衡配置不可或缺的部分。
?
實驗:
一.編譯安裝nginx服務
1.關閉防火墻,將安裝nginx所需軟件包傳到/opt目錄下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2..安裝依賴包
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
3.創建運行用戶、組(Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限)
useradd -M -s /sbin/nologin nginx
4.編譯安裝nginx
tar zxvf nginx-1.24.0.tar.gz -C /opt/ #先解壓
cd nginx-1.24.0/ #然后進入指定目錄編譯:
./configure \
--prefix=/usr/local/nginx \ #指定nginx的安裝路徑
--user=nginx \ #指定用戶名
--group=nginx \ #指定組名
--with-http_stub_status_module #啟用 http_stub_status_module 模塊以支持狀態統計
--with-http_ssl_module #啟動 http_ssl_module 模塊必要模塊
make && make install #編譯安裝
5.檢查、啟動、重啟、停止 nginx服務
nginx -t #檢查配置文件是否配置正確
6.啟動
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #讓系統識別nginx的操作命令/usr/local/nginx/sbin/nginx #啟動nginx服務
二.nginx的版本升級
面試題:nginx怎么安裝以及升級的呢
答案:我們是源碼編譯安裝的,升級是從網站上先下載最新的軟件包,然后上傳服務器進行解壓,然后./confgure按照原有配置進行配置 ,然后make編譯生成二進制文件,再把生成文件替換到nginx安裝目錄當中,在使用makeupgrade去進行升級。
替換操作演示:
1.源代碼的二進制文件在 objs目錄中的nginx文件
2.然后進入安裝目錄 把nginx最新版的二進制文件復制到安裝目錄中
3.然后make upgrade進行升級
三.添加 Nginx 系統服務
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target
四.認識Nginx服務的主配置文件 nginx.conf
1.Nginx 有哪些進程:
(1)master進程:管理worker進程,加載配置文件
(2)worker進程:處理請求連接
2.Nginx 的最大并發如何設置
第一步:
nginx應用程序配置文件設置? ?
- worker_processes(工作進程數,一般設置為與CPU數量相同,或auto)? ? ? ? ? ? ? ? ? ? ? ? ?
- worker_connections(每個worker進程能夠處理的連接數)在event塊
- worker_rlimit_nofile(設置每個worker進程最大可以打開的文件數)在event塊
第二步;
- 1.臨時修改系統支持:再修改系統支持ulimit -a? ??
- 2.永久修改系統支持:? vim /etc/security/limits.conf
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?* ?soft ?nofile ?65535
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?* ?hard ?nofile ?65535
?定義
3.nginx 的 root 和 alias 指定路徑的區別
nginx 的 root 和 alias 指定路徑的區別?
root(根目錄)
location /abc {root /var/www;
}
處理方式:root路徑+location路徑 http://192.168.80.20/abc/xy101/scj.html--> /var/www/abc/xy101/scj.htmlalias(別名目錄、虛擬目錄)
location /abc {alias /var/www;
}
處理方式: alias路徑替換location路徑 http://192.168.80.20/abc/xy101/scj.html --> /var/www/xy101/scj.html
4.nginx 訪問狀態統計
- 安裝nginx時添加狀態統計模塊 ./configure --with-http_stub_status_module
- 修改配置文件,開啟狀態統計功能 stub_status on; ?access_log off;
- 測試驗證 curl -s
修改配置文件如下
網頁驗證:
五.nginx 服務器當前的并發量怎么看?
1.通過ss -antp 或者netstat -antp
ss -antp | grep nginx | grep -c ESTAB #
netstat
2.通過curl -s命令?
curl -s http://192.168.73.80/ngx-state
查看 Active connections: 行的數組
運用awk表達式:
curl -s http://192.168.73.80/ngx-state | awk '/active connections/ {print $NF}'
curl -s http://192.168.73.80/ngx-state | awk 'NR==1 {print $NF}'
六.nginx 訪問認證
- 安裝 httpd-tools 軟件包,使用 htpasswd 生成用戶認證文件,并修改文件的歸屬nginx和權限400
- 修改配置文件,添加 basic_auth ? basic_auth_user_file 配置
- 測試驗證
修改配置文件如下:
七.nginx 訪問控制
nginx 訪問控制
在? http{...}配置塊(對所有站點生效)
? ? ? server{...}配置塊(對當前站點所有的訪問路徑生效) ?
? ? ? location{...}配置塊(只對當前站點指定的URL訪問路徑生效) 中添加配置
8.將訪問過多次的ip地址加入黑名單
腳本:
9.nginx虛擬主機
基于域名的虛擬主機?
server {
? ? server_name XXX; ? ? ? ? #指定不同的域名
}
基于IP的虛擬主機
server {
? ? listen ?<IP>:端口; ? ? ? #指定不同的IP
}
基于端口的虛擬主機
server {
? ? listen ? IP:<端口>; ? ? ?#指定不同的端口
}
?