nginx(2)
訪問控制
用於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
相關文章
- Nginx 教程(2):效能Nginx
- docker -nginx2DockerNginx
- nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)NginxErrorAI
- 採坑系列2-nginxNginx
- Nginx專題(2):Nginx的負載均衡策略及其配置Nginx負載
- nginx + https(tomcat2)NginxHTTPTomcat
- Mac下nginx配置http2MacNginxHTTP
- HAProxy、Nginx 配置 HTTP/2 完整指南NginxHTTP
- nginx代理http2服務NginxHTTP
- AWS Linux2 安裝 nginxLinuxNginx
- Nginx 實戰-01-nginx ubuntu(windows WSL2) 安裝筆記NginxUbuntuWindows筆記
- nginx+php 實現代理與負載均衡 (1臺nginx,2臺php)NginxPHP負載
- Nginx入門(2)反向代理和負載均衡Nginx負載
- 升級nginx以支援http2的方法NginxHTTP
- Yii2配置Nginx偽靜態的方法Nginx
- Mac 下搭建Nginx HTTP/2的服務端MacNginxHTTP服務端
- docker-compose with node&pm2&nginx 使用DockerNginx
- Setup SSL using .PFX file on nginx/apache2NginxApache
- 我眼中的 Nginx(二):HTTP/2 dynamic table size updateNginxHTTP
- PM2,Nginx,Shadowsocks 開機重啟Nginx
- .Net 6.0 部署Linux+Nginx +PM2教程LinuxNginx
- 【Nginx】Nginx容器Nginx
- Nginx入門到實戰(2)場景實現篇Nginx
- node /nginx/pm2環境及自動部署-centosNginxCentOS
- [Docker系列·2]搭建基於Docker的Nginx伺服器DockerNginx伺服器
- Nginx之(三)Nginx配置Nginx
- 【Nginx】Ubuntu 安裝 NginxNginxUbuntu
- [Nginx] Ubuntu 安裝 NginxNginxUbuntu
- Nginx-04-Docker NginxNginxDocker
- 基於滴滴雲DC2+Nginx搭建負載均衡方案Nginx負載
- 2. 監控nginx伺服器502狀態碼Nginx伺服器
- Nginx和Tomcat的session處理分為兩步 2NginxTomcatSession
- nginx之 nginx限流配置Nginx
- Nginx篇--Nginx原始碼搭建Nginx原始碼
- Nginx篇--解讀nginx配置Nginx
- 【Nginx】Nginx優秀特點Nginx
- 【Nginx】php+nginx快速搭建NginxPHP
- Nginx Geoip2 處理不同國家 (或城市) 的訪問Nginx