Linux架构之nginx2

image

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访问控制模块

  • ngx_http_access_module
两个配置项: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;
    }
}

posted @ 2022-01-04 15:16  Joshua_jiaxue  阅读(48)  评论(0编辑  收藏  举报