1. nginx虚拟主机
# 1. 基于IP的方式
server{
listen 80;
server_name 192.168.15.7;
location / {
root /opt/super_mario;
index index.html;
}
}
server {
listen 80;
server_name 172.16.1.7;
location / {
root /opt/tank;
index index.html;
}
}
# 测试 nginx -t
# 重启 systemctl restart nginx
# 2. 基于多端口的方式
server {
listen 80;
server_name 192.168.15.7;
location / {
root /opt/super_mario;
index index.html;
}
}
server {
listen 81;
server_name 192.168.15.7;
location / {
root /opt/tank;
index index.html;
}
}
# 3. 基于多域名的方式
server {
listen 80;
server_name www.game.com;
location / {
root /opt/super_mario;
index index.html;
}
}
server {
listen 80;
server_name www.game11.com;
location / {
root /opt/tank;
index index.html;
}
}
2. nginx日志
# 网站状态码是500的比例
# 网站的访问来源
# 网站排错
systemctl status nginx.service -l
/var/log/nginx/error.log
http_user_agent 客户端浏览器标识
$http_x_forwarded_for 真实的客户端IP
# 在反向代理中生效
$remote_addr 客户端IP
3. nginx访问控制模块
两个配置项:deny allow
允许或拒绝某些IP访问
deny 拒绝
allow 允许
# 如果想使用这两个模块,配置中一定要包含这个模块
server {
listen 80;
server_name www.game.com;
allow 192.168.15.7;
deny all;
location / {
root /opt/super_mairo;
index index.html;
}
}
"案例1:"允许192.168.15.7访问,不允许其他IP访问
allow 192.168.15.7;
deny all;
"案例2:"允许192.168.15.0这个网段访问,不允许其他网段访问
allow 192.168.15.0/24;
deny all;
"案例3:"只允许通过vpn来访问
allow 172.16.1.81;
deny all;
- ngx_http_auth_basic_module
访问之前需要登录
1. 安装httpd软件
yum install httpd-tools -y
2. 生成用户名密码文件
htpasswd -c /etc/nginx/auth joshua
# 输入密码,确认密码
cat /etc/nginx/auth
3. 将文件路径加入nginx配置
vim /etc/nginx/conf.d/game.conf
auth_basic "welcome to login";
auth_basic_user_file /etc/nginx/auth;
4. 重启nginx
nginx -t
systemctl restart nginx
server {
listen 80;
server_name www.game.com;
auth_basic "welcome to login";
auth_basic_user_file /etc/nginx/auth;
location / {
root /opt/super_mario;
index index.html;
}
}
server {
listen 80;
server_name www.game11.com;
location / {
root /opt/tank;
index index.html;
}
}
- ngx_http_autoindex_module
autoindex # 展示目录索引
用于:http,server,location
mv nginx-1.20.2 /tmp
vim /etc/nginx/cong.d/game.conf
server {
listen 80;
server_name 192.168.15.7;
location / {
root /tmp/nginx-1.20.2/;
autoindex on;
sutoindex_exact_size on;
autoindex_format html;
autoindex_localtime on;
}
}
# 测试
# 重启
4. nginx状态监控模块
"监控nginx运行状态"
# 需要一个独立的location
server {
listen 80;
server_name 192.168.15.7;
location / {
stub_status;
}
}
活动客户端连接数
接受的客户端连接总数
处理的连接总数
客户端请求的总数
Reading: nginx正在读取请求头的当前连接数
Writing: nginx将响应写回客户端的当前连接数
Waiting: 当前等待的......
5. 访问连接控制模块
1. limit_conn_module
# 限制每个定义键的连接数的
"ab工具:做压测(压力测试)"
1. 安装ab测试命令
yum install httpd-tools -y
2. ab参数
-n request 整体的请求数,总共需要访问多少次
-c 一次要执行多个请求数,每次访问多少个#同时访问
# 测试
ab -n 100000 -c 200 http://192.168.15.7/
limit_conn_zone $remote_addr zone=addr:10m;
server{
listen 80;
server_name 192.168.15.7;
limit_conn addr 1;
location / {
root /tmp/nginx-1.20.2/;
index index.html;
}
}
2. limit_req_module
# 控制nginx访问量的,限制请求速率
1. 连接池
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
server_name 192.168.15.7;
limit_req zone=one burse=5;
location / {
root /tmp/nginx-1.20.2/;
index index.html;
}
}
# 测试
# 重启
# limit_req_zone 声明连接池
# $binary_remote_addr 变量
# zone=one 名称
# 10m 连接池的大小
# rate=1r/s 速率
2. 限制数
"案例:"每秒钟只能有一个访问
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
listen 80;
server_name 192.168.15.7;
limit_req zone=one burst=5;
location / {
root /tmp/nginx-1.20.2/;
index index.html;
}
}