Web 基礎——Nginx(二)
- 一、Nginx 基礎配置
- 1.Nginx 組態檔
- 2.Nginx 日志配置
- 3.Nginx 下載站點
- 4.Nginx 訪問控制
- 1)第一種方式
- 2)第二種方式
- 5.Nginx 虛擬主機
一、Nginx 基礎配置
1.Nginx 組態檔
- Nginx 主組態檔是一個純文本型別的檔案,整個組態檔是以區塊的形式組成的,一般每個區塊以一對
{}大括號,
// 全域配置:
user #設定nginx服務的系統使??戶
worker_processes #?作行程. 配置和CPU個數保持?致
error_log #錯誤?志. 后?接?的是路徑
pid #Nginx服務啟動時的pid
// Events 事件模塊:
events { #事件模塊
worker_connections #每個worker行程?持的最?連接數
use #內核模型. select | poll | epoll
// HTTP 配置:
http {
...
server { #第一個虛擬主機
listen 80; #監聽端?. 默認80
server_name localhost; #提供服務的域名或主機名
'location' / { #控制?站訪問路徑
root /usr/share/nginx/html; #存放?站路徑
index index.html index.htm; #默認訪問首頁?件
}
error_page 500 502 503 504 /50x.html; #指定錯誤代碼. 統?定義錯誤??. 錯誤代碼重定向到新的Locaiton
'location' = /50x.html {
root html;
}
}
...
server { #第?個虛擬主機配置
...
}
2.Nginx 日志配置
- 開啟 Nginx 日志配置只需要將組態檔中以下內容將
#去掉即可,
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
13 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
14 # '$status $body_bytes_sent "$http_referer" '
15 # '"$http_user_agent" "$http_x_forwarded_for"';
16 #access_log logs/access.log main;
Nginx 日志變數:
$remote_addr:表示客戶端地址,$remote_user:http客戶端請求 Nginx 認證用戶名,$time_local:Nginx 的本地時間,$request:Request 請求行,GET 等方法、http協議版本,$status:respose回傳的狀態碼,$body_bytes_sent:從服務端回應給客戶端body資訊大小,$http_referer:http上一級頁面,防盜鏈、用戶行為分析,$http_user_agent:http頭部資訊,客戶端訪問設備,$http_x_forwarded_for:http請求攜帶的http,
3.Nginx 下載站點
- Nginx 默認是不允許列出整個目錄瀏覽下載,
語法格式:autoindex on | off 可在 http | server | location 區域中添加
配置目錄瀏覽功能
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.html index.htm;
autoindex on; #開啟目錄瀏覽
autoindex_exact_size off; #修改為 off 即可顯示出檔案的大概大小. 單位是 KB | MB | GB
[root@localhost ~]# systemctl restart nginx #重啟Nginx服務
[root@localhost ~]# cd /usr/local/nginx/html/
[root@localhost html]# ls
index.html
[root@localhost html]# rm -rf index.html #洗掉默認網頁
[root@localhost html]# mkdir zhangsan
[root@localhost html]# mv /root/nginx-1.18.0.tar.gz .
[root@localhost html]# ls
nginx-1.18.0.tar.gz zhangsan
訪問驗證:

4.Nginx 訪問控制
1)第一種方式
limit_conn_module:限制 Nginx 服務器所承載的單個客戶端單個 IP 地址在單一時間所發起的連接數量(防爬蟲)limit_req_module:限制 Nginx 服務器所承載的單個客戶端單個 IP 地址在單一時間所發起的請求數量,
查看 Nginx 默認安裝的模塊,在解壓 Nginx 源代碼目錄 下運行以下命令
[root@localhost ~]# cd /usr/src/nginx-1.18.0/
[root@localhost nginx-1.18.0]# cat auto/options | grep 'YES' #查看Nginx默認安裝的所有模塊
查看是否有 limit_conn 和 limit_req 這兩個模塊
[root@localhost nginx-1.18.0]# cat auto/options | grep 'HTTP_LIMIT_CONN=YES'
HTTP_LIMIT_CONN=YES
[root@localhost nginx-1.18.0]# cat auto/options | grep 'HTTP_LIMIT_REQ=YES'
HTTP_LIMIT_REQ=YES

配置 Nginx 連接限制
語法格式:
limit_conn_zone key zone=name:size #必須在 http 區域中添加
limit_conn zone number #可在 http | server | location 區域中添加
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
...
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
server {
...
location / {
...
limit_conn conn_zone 1; #同一時刻只允許一個客戶端 IP 地址
[root@localhost ~]# systemctl restart nginx
驗證:
[root@localhost ~]# yum -y install httpd-tools #安裝 ab 壓力測驗工具
[root@localhost ~]# echo "<h1>Hello</h1>" > /usr/local/nginx/html/index.html #撰寫測驗頁面
[root@localhost ~]# ab -n 200 -c 20 http://127.0.0.1/

配置 Nginx 請求限制
語法格式:
limit_req_zone key zone=name:size rate=rate #必須在 http 區域中添加
limit_req zone number [burst=number] [nodelay] #可在 http | server | location 區域中添加
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
...
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=30r/m; #rate 限制速率. 限制一秒鐘最多一個 IP 請求
server {
...
location / {
...
limit_req zone=req_zone;
[root@localhost ~]# systemctl restart nginx
驗證:
[root@localhost ~]# ab -n 200 -c 20 http://127.0.0.1/

2)第二種方式
- 基于 IP 的訪問控制
http_access_module - 基于用戶名登錄認證
http_auth_basic_module
配置基于 IP 的訪問控制
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
...
deny 192.168.1.250; #拒絕單個IP. 可在 http | server | location 區域中添加
allow all; #允許所有
[root@localhost ~]# systemctl restart nginx #重啟Ngix服務
驗證:

基于用戶登錄認證
[root@localhost ~]# htpasswd -c /usr/local/nginx/conf/auth_conf zhangsan #創建測驗用戶
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
...
auth_basic "Auth access Blog Input your Passwd ~"; #提示語. 可在 http | server | location 區域中添加
auth_basic_user_file /usr/local/nginx/conf/auth_conf; #限制用戶檔案. 可在 http | server | location 區域添加
[root@localhost ~]# systemctl restart nginx #重啟Ngix服務
驗證:


5.Nginx 虛擬主機
所謂虛擬主機,就是在 Web 服務器里是一個獨立的網站站點,這個站點對應獨立的域名(也有可能是 IP 或埠),具有獨立的程式及資源目錄,可以獨立地對外提供服務供用戶訪問,
1)創建 Web 站點目錄
[root@localhost ~]# mkdir /usr/local/nginx/html/Coco/
[root@localhost ~]# mkdir /usr/local/nginx/html/Zozo/
[root@localhost ~]# echo "Hello Coco" > /usr/local/nginx/html/Coco/index.html
[root@localhost ~]# echo "Hello Zozo" > /usr/local/nginx/html/Zozo/index.html

2)配置基于域名的虛擬主機
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 80;
server_name www.Coco.com;
location / {
root html/Coco;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.Zozo.com;
location / {
root html/Zozo;
index index.html index.htm;
}
}
}
[root@localhost ~]# systemctl restart nginx #重啟Nginx服務
[root@localhost ~]# cat <<END >> /etc/hosts #配置Hosts檔案決議
192.168.1.1 www.Coco.com
192.168.1.1 www.Zozo.com
END
驗證:
[root@localhost ~]# curl http://www.Coco.com
[root@localhost ~]# curl http://www.Zozo.com

配置虛擬主機別名
- 所謂虛擬主機別名,就是虛擬主機設定除了主域名以外的一個域名,實作用戶訪問的多個域名對應同一個,
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 80;
server_name www.Coco.com Coco.com;
location / {
root html/Coco;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.Zozo.com;
location / {
root html/Zozo;
index index.html index.htm;
}
}
}
[root@localhost ~]# cat <<END >> /etc/hosts
192.168.1.1 Coco.com
END
[root@localhost ~]# curl http://Coco.com
[root@localhost ~]# curl http://www.Coco.com

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287355.html
標籤:其他
上一篇:JMU軟體大資料技術復習提綱
