nginx(2)

碗裡沒有湯發表於2020-12-22

訪問控制

用於location段
allow:設定允許哪臺或哪些主機訪問,多個引數間用空格隔開
deny:設定禁止哪臺或哪些主機訪問,多個引數間用空格隔開
示例:

        location /test {
            root   /usr/local/nginx/html;
            index  index.html;
            allow 192.168.86.138/32;
            deny all;
        }
## 表示只允許本機訪問,拒絕其他所有主機訪問
[root@Nginx ~]# curl http://192.168.163.138/test/
hello 123
[root@MASTER ~]# hostname -I
192.168.163.136
[root@MASTER ~]# curl 192.168.163.138/test/
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.18.0</center>
</body>
</html>

基於使用者認證

使用者認證格式

## 配置檔案配置資訊
auth_basic "歡迎資訊";
auth_basic_user_file "/path/to/user_auth_file"
#user_auth_file內容格式為
username:password
#這裡的密碼為加密後的密碼串,建議用htpasswd來建立此檔案
htpasswd -c -m /path/to/.user_auth_file USERNAME
## 生成一個賬號密碼檔案
[root@Nginx nginx]# htpasswd -c -m /usr/local/nginx/.password admin
New password: 
Re-type new password: 
Adding password for user admin
[root@Nginx nginx]# ls -a && cat .password 
.                 conf          logs        sbin
..                fastcgi_temp  .password   scgi_temp
client_body_temp  html          proxy_temp  uwsgi_temp
admin:A8d7$b4t3fA7K2pGjGIQl0tEaH9ar$3uFXEr
## 配置檔案
[root@Nginx nginx]# vim conf/nginx.conf
 location /test {
            root /usr/local/nginx/html;
            index index.html;
            auth_basic "tom";
            auth_basic_user_file '/usr/local/nginx/.password';
        }
[root@Nginx nginx]# nginx -s reload
[root@Nginx ~]# curl -u admin:123456 http://192.168.163.136/test/
hello

狀態頁面

開啟status:

#前提是nginx編譯有–with-http_stub_status_module這個模組
#只允許本機檢視狀態頁面

   location /status {
         stub_status on;           #on表示開啟off表示關閉
         allow 192.168.163.136/24;
         deny all;
        }
[root@Nginx ~]# nginx -s reload
#訪問狀態頁面的方式:http://server_ip/status
[root@Nginx ~]# curl http://192.168.163.136/status
Active connections: 1 
server accepts handled requests
 28 28 27 
Reading: 0 Writing: 1 Waiting: 0 
[root@Nginx ~]# 
#第一個數28對應的是accepts
#第二個數28對應的是handled
#第三個數27對應的是requests
#Reading值大說明本機正在處理請求過多
#Writing值大說明本機正在處理請求過多

狀態頁面資訊詳解:

狀態碼表示的意義
Active connections 2當前所有處於開啟狀態的連線數
accepts總共處理了多少個連線
handled成功建立多少握手
requests總共處理了多少個請求
Reading nginx讀取到客戶端的Header資訊數,表示正處於接收請求狀態的連線數
Writing nginx返回給客戶端的Header資訊數,表示請求已經接收完成,且正處於處理請求或傳送響應的過程中的連線數
Waiting開啟keep-alive的情況下,這個值等於active - (reading + writing),意思就是Nginx已處理完正在等候下一次請求指令的駐留連線

Nginx平滑升級

## 新增一個新模組比如echo
## 檢視原版本編譯了那些引數
[root@Nginx ~]# nginx -V 
nginx version: nginx/1.18.0
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC) 
built with OpenSSL 1.1.1c FIPS  28 May 2019 (running with OpenSSL 1.1.1g FIPS  21 Apr 2020)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log
[root@Nginx ~]# 

## 下載新模組
[root@Nginx ~]# wget https://codeload.github.com/openresty/echo-nginx-module/zip/master
[root@Nginx ~]# yum -y install unzip
[root@Nginx ~]# unzip echo-nginx-module-master.zip 
## 編譯新模組
#在原有的引數後面加上--add-module=新模組的路徑
[root@Nginx ~]# cd nginx-1.19.5
[root@Nginx nginx-1.19.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log  --add-module=../echo-nginx-module-master   ## 新增得
[root@Nginx nginx-1.19.5]# make
## 備份原程式
[root@Nginx sbin]# pwd
/usr/local/nginx/sbin
[root@Nginx sbin]# cp nginx{,-20201221}
[root@Nginx sbin]# ls
nginx  nginx-20201221
## 安裝新程式替換原程式
[root@Nginx objs]# pwd
/root/nginx-1.19.5/objs
## 停止,啟動.備份
[root@Nginx objs]# /usr/local/nginx/sbin/nginx -s stop && \cp nginx /usr/local/nginx/sbin/ && /usr/local/nginx/sbin/nginx
[root@Nginx objs]# nginx -V
nginx version: nginx/1.19.5
built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC) 
built with OpenSSL 1.1.1g FIPS  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --add-module=../echo-nginx-module-master     #新增了新的模組
## 驗證
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
location /test{                  #在server段新增測試
            echo 'runtime';
        }
[root@Nginx ~]# nginx -s reload #重新載入配置檔案
[root@Nginx ~]# curl http://192.168.163.136/test
hello

相關文章