Nginx配置和使用
安装
基础配置
代理配置
auth_basic基础认证
在 Nginx 中,可以通过 auth_basic 指令实现 HTTP 基础认证(Basic Authentication)。此功能允许你为特定的路径或站点添加用户名和密码验证,只有通过身份验证的用户才能访问资源。
安装 htpasswd 工具
# Ubuntu/Debian
$ apt info apache2-utils
$ apt install apache2-utils
# CentOS/RHEL
sudo yum install httpd-tools
生成用户名和密码文件
# 运行以下命令创建一个用户文件并添加用户
$ htpasswd -c /etc/nginx/.htpasswd username
# 说明
• -c:创建文件(如果文件已存在,请不要使用此选项)。
• username:替换为你想添加的用户名。
# 按照提示输入密码即可
# 如果需要添加更多用户(不覆盖已有用户):
$ htpasswd /etc/nginx/.htpasswd another_user
配置 Nginx
server {
listen 80;
server_name example.com;
# 例1:保护整站
location / {
auth_basic "Restricted Area"; # 提示信息
auth_basic_user_file /etc/nginx/.htpasswd; # 指定用户名密码文件
proxy_pass http://127.0.0.1:8000; # 示例代理配置
proxy_set_header Host $host;
}
# 例2:保护特定路径
location /admin {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
# 例3:结合IP白名单
location / {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
allow 192.168.1.0/24; # 允许的 IP 段
deny all; # 其他 IP 需要认证
satisfy any; # 满足任意条件即可
}
}
# 参数说明
# 1.auth_basic:
# • 指定身份验证提示信息,用户会在浏览器的弹窗中看到该信息。
# 2.auth_basic_user_file:
# • 指定存储用户名和密码的文件路径(如 /etc/nginx/.htpasswd)。
# • 文件权限应确保只有 Nginx 用户可以读取:
# sudo chmod 640 /etc/nginx/.htpasswd
# sudo chown root:nginx /etc/nginx/.htpasswd
根据 nginx 日志统计 ip 访问量
根据 nginx 日志统计 ip 访问量,由浅入深,逐步讲解。涉及命令 awk、sort、uniq
nginx access.log 日志内容截图如下:
统计 nginx 日志的第一列 ip
[root@izbp1845cet96se1qmb5ekz logs]# ls
access.log error.log nginx.pid
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log
......
222.189.209.114
222.189.209.114
222.189.209.114
222.189.209.114
222.189.209.114
101.132.109.130
101.201.116.105
121.199.160.108
193.106.29.66
......
统计 nginx 日志的第一列 ip 并排序
# 排序不加 - n , 则是按 ANSIC 码进行排序
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log |sort
47.99.192.167
47.99.192.167
47.99.192.167
49.144.46.163
5.101.40.82
5.101.40.82
5.101.40.82
5.39.217.107
5.39.217.107
58.144.150.145
58.38.86.89
统计 nginx 日志的第一列 ip 并排序和去重
- uniq 参数 -c 或 --count 在每列旁边显示 重复的次数
- sort -n 依照数值的大小排序
- sort -n -r 依照数值的大小,以相反的顺序进行排序
# 排序【sort】, 去重【uniq -c】 ,正向排序【sort -n】
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log |sort | uniq -c | sort -n
1 101.132.100.6
1 101.132.101.26
......
78 176.32.33.145
104 80.82.78.50
182 223.104.146.132
186 116.233.29.18
393 47.101.50.252
# 排序【sort】, 去重【uniq -c】 ,逆向排序【sort -n -r】
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log |sort | uniq -c | sort -n -r
393 47.101.50.252
186 116.233.29.18
182 223.104.146.132
104 80.82.78.50
93 116.232.144.95
84 218.91.49.122
84 172.105.218.208
78 176.32.33.145
......
对上面结果,在命令行窗口实现上下翻页查看效果 可以通过管道加 less
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log |sort | uniq -c | sort -n -r | less
393 47.101.50.252
186 116.233.29.18
182 223.104.146.132
104 80.82.78.50
93 116.232.144.95
84 218.91.49.122
84 172.105.218.208
78 176.32.33.145
51 211.161.248.135
:
使用 上下箭头 PgUp 和 PgDn 进行翻页查看
根据 nginx 日志统计 ip 访问量 ,最终命令:
[root@izbp1845cet96se1qmb5ekz logs]# awk '{print $1}' access.log |sort | uniq -c | sort -n -r
393 47.101.50.252
186 116.233.29.18
182 223.104.146.132
104 80.82.78.50
93 116.232.144.95
84 218.91.49.122
84 172.105.218.208
78 176.32.33.145
69 198.108.67.48
......