nginx rce_nginx基本使用「建议收藏」

nginx rce_nginx基本使用「建议收藏」nginx的主配置文件Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的

nginx的主配置文件

在这里插入图片描述

Nginx 主配置文件/etc/nginx/nginx.conf 是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般每个区块以一对大括号{ }来表示开始与结束。
Main 位于 nginx.conf 配置文件的最高层Main 层下可以有 Event、HTTP 层
HTTP 层下面有允许有多个 Server 层, 用于对不同的网站做不同的配置

Server 层也允许有多个 Location, 用于对不同的路径进行不同模块的配置

查看nginx.conf 文件

user  nginx;                        //设置 nginx 服务的系统使用用户
worker_processes  1;                //工作进程, 配置和 CPU 核心数保持一致

error_log  /var/log/nginx/error.log warn;   //错误日志, 后面接入的是路径 
pid        /var/run/nginx.pid;              //Nginx 服务启动时的 pid

//events IO 事件模块
events {
    worker_connections  1024;   //每个 worker 进程支持的最大连接数
                                //这里有一个use 老版本内核模型,select,poll,epoll
}

//http{ }段内
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

//必须使用虚拟机配置站点, 每个虚拟机使用一个 server{}段
server {
listen	80;	//监听端口, 默认 80

server_name	www.example.com;	//提供服务的域名或主机名



//控制网站访问路径location	/ {
root	/var/www/html/;	//存放网站路径index	
index.html index.htm;	//默认访问首页文件
}



//指定错误代码, 统一定义错误页面, 错误代码重定向到新的
 Locaiton error_page	500 502 503 504	/50x.html;
location = /50x.html { root	html;
}

}

...

//第二个虚拟主机配置'server' {
...

}

}

基于域名的虚拟主机
1创建测试页 ,小主是在/var/www/ralph下面
2 在nginx的conf.d里面写配置文件
3重启服务
小主使用了默认的文件 直接修改IP和测试页的目录位置就可以

server {
    listen       80;
    server_name  192.168.92.218;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/ralph;
        index  index.html index.htm;
    }

在这里插入图片描述

Nginx 的location 匹配规则

1.Nginx 的 location 语法location [= |~ | ~* |^~] /uri/ { … }
= 严格匹配。如果请求匹配这个 location,那么将停止搜索并立即处理此请求
~ 区分大小写匹配(可用正则表达式)
~* 不区分大小写匹配(可用正则表达式)
!~ 区分大小写不匹配
!~* 不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉 nginx 如果路径匹配那么不测试正则表达式

示例 1:
location / { } 匹配任意请求

示例 2:
location ~* .(gif|jpg|jpeg)$ { rewrite .(gif|jpg|jpeg)$ /logo.png;

不区分大小写匹配任何以 gif、jpg、jpeg 结尾请求,并将该请求重定向到 /logo.png 请求

示例 3:
location ~ ^.+.txt$ {

root /usr/local/nginx/html/;
}
区分大小写匹配以.txt 结尾的请求,并设置此 location 的路径是/usr/local/nginx/html/。也就是以.txt 结尾的请求将访问/usr/local/nginx/html/ 路径下的 txt 文件

Nginx 访问状态统计

Nginx 内置了 HTTP_STUB_STATUS 状态统计模块,用来反馈当前 web 访问情况,以下打开 stub_status 配置

Syntax: stub_status;
Default: —
Context: server, location
可以放在server里面 就是监控这个虚拟主机
放在localtion 就是监控localtion里面的东西

vim /etc/nginx/conf.d/example.conf
// 可以放在server和localtion里面,放在server里面是监控全部,放在location里面就是监控部分的
在这里插入图片描述

在这里插入图片描述
Reading:Nginx 读取到客户端的 Header 信息数。

Writing:Nginx 返回给客户端的 Header 信息数。

Waiting :Nginx 开启 keep-alive 长连接情况下, 既没有读也没有写, 建立连接情况

Nginx 日志配置

查看日志文件的目录:

[root@localhost nginx]# pwd
/var/log/nginx
[root@localhost nginx]# ls
access.log  error.log

日志文件的配置
在/etc/nginx/nginx.conf 中

在这里插入图片描述

Nginx 日志变量
变量 含义
$remote_addr //表示客户端地址
$remote_user //http 客户端请求 nginx 认证用户名
$time_local //Nginx 的时间
$request //Request 请求行, GET 等方法、http 协议版本
$status //respoence 返回状态码
$body_bytes_sent //从服务端响应给客户端 body 信息大小
$http_referer //http 上一级页面, 防盗链、用户行为分析
$http_user_agent //http 头部信息, 客户端访问设备
$http_x_forwarded_for //http 请求携带客户端真实 IP(代理)

Nginx 下载站点

Nginx 默认是不允许列出整个目录浏览下载。
Syntax: autoindex on | off;
Default: autoindex off;
Context: http, server, location
//autoindex 常用参数autoindex_exact_size off;
默认为 on, 显示出文件的确切大小,单位是 bytes。
修改为 off,显示出文件的大概大小,单位是 kB 或者 MB 或者 GB。autoindex_localtime on;
默认为 off,显示的文件时间为 GMT 时间。
修改为 on, 显示的文件时间为文件的服务器时间。
charset utf-8,gbk;
默认中文目录乱码,添加上解决乱码。

配置下载目录:

1、创建/soft/download 目录,复制测试下载文件
mkdir /soft/download -p
cp -r /boot/*	/soft/download/ 
2、修改配置文件添加以下内容
location /download {
root	/soft; autoindex on;
autoindex_localtime on; 
autoindex_exact_size off; }

附上小主的脚本
但是要注意 !!!!
使用小主的脚本时候,需要原来之前有自己的配置文件,同时 使用脚本时候要手动修改最后一个大括号

#!/bin/bash
<<END
19-07
BY.RALPH
nginx 中配置下载目录
END


stty erase '^H'
read -p "请输入要创建的下载目录(https://ip/XXX): " down_name
read -p "请输入要创建的下载目录位置(/xxx/xxx/): " dir_down
read -p "请输入nginx的配置文件目录: "  set_file


mkdir -p /$dir_down/$down_name

cat >>$set_file << EOF

	location $down_name { 
   
		root	$dir_down; 	
		autoindex on;
		autoindex_localtime on; 	
		autoindex_exact_size off; 
		}
EOF

#上面是加入到server里面的 由于之前的server 已经有一个结尾花括号
# 而location 要在server里面,然后以花括号结束 所以要手动 修改括号的位置
# 配置文件 之前要有server
# nginx -t
# nginx -s reload

若是访问出现了 403
请看下面链接 基本上都是selinux 的问题

链接: https://www.cnblogs.com/williamjie/p/9604594.html.

Nginx 访问限制

连接频率限制 limit_conn_module (tcp 连接数)
请求频率限制 limit_req_module (http 请求) //限制单一的 IP 地址的请求的处理速率http 协议的连接与请求

HTTP 是建立在 TCP, 在完成 HTTP 请求需要先建立 TCP 三次握手(称为 TCP 连接),在连接的基础上在 HTTP 请求。

HTTP 请求建立在一次 TCP 连接基础上一次 TCP 请求至少产生一次 HTTP 请求

1、Nginx 请求限制配置:

  • 全局定义请求限制

Syntax: limit_conn_zone key zone=name:size rate=rate;
Default: —
Context: http

  • 引用请求限制

Syntax: limit_conn zone number [burst=number] [nodelay];
Default: —
Context: http, server, location

1)http 段配置请求限制, rate 限制速率,限制一秒钟最多一个 IP 请求,1r/s 只接收一个请求,其余请求拒绝处理并返回错误码给客户端
PS:limit_req_zone 中的下划线 和location中的limit_req zone 没有下划线

limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
server {
    listen       80;
    server_name  192.168.92.218;

    location / {
        root   /var/www/ralph;
        index  index.html index.htm;
        limit_req zone=req_zone;
    }

ab测试
ab测试的包
yum -y install httpd-tools

-n 总的次数请求 -c 一次发送多少个包
如下面所示:
-n2000 -c100
总共2000个包 一次发送100个 一共20次发完

[root@localhost conf.d]# ab -n 2000 -c 100 192.168.92.218/index.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.92.218 (be patient)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests


Server Software:        nginx/1.16.1
Server Hostname:        192.168.92.218
Server Port:            80

Document Path:          /index.html
Document Length:        16 bytes

Concurrency Level:      100
Time taken for tests:   0.195 seconds
Complete requests:      2000
Failed requests:        1999
   (Connect: 0, Receive: 0, Length: 1999, Exceptions: 0)

设置最大突发大小 burst 为 3,突发延迟处理

    location / {
        root   /var/www/ralph;
        index  index.html index.htm;
        limit_req zone=req_zone burst=3;
    }

ab测试:

[root@localhost conf.d]# ab -n 200 -c 100 192.168.92.218/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.92.218 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests


Server Software:        nginx/1.16.1
Server Hostname:        192.168.92.218
Server Port:            80

Document Path:          /
Document Length:        16 bytes

Concurrency Level:      100
Time taken for tests:   3.002 seconds
Complete requests:      200
Failed requests:        196

Nginx 连接限制配置:

//全局定义连接限制
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http

//引用连接限制
Syntax: limit_conn zone number;
Default: —
Context: http, server, location

dd命令产生一个测试用 的文件大小

[root@localhost ~]# dd if=/dev/sda of=/soft/download/a.tar.gz bs=100M count=2
2+0 records in
2+0 records out
209715200 bytes (210 MB) copied, 2.25418 s, 93.0 MB/s


在配置文件中修改:
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
server {
listen	80;
server_name	www.example.com;

location /download {
root /soft; 
autoindex on;
autoindex_localtime on; 
autoindex_exact_size off; 
limit_conn conn_zone 2;
limit_rate 100k;
}

limit_conn 为限制并发连接数;
limit_rate 为限制下载速度

在这里插入图片描述

今天的文章nginx rce_nginx基本使用「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88978.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注