一、Nginx常用模块
Nginx模块分为 Nginx 官方模块 以及 Nginx第三方模块Nginx编译选项 | 模块作用 |
ngx_http_core_module | 包含一些核心的http参数配置,对应Nginx的配置区块部分 |
ngx_http_log_module | 访问日志模块,以指定格式记录访问日志信息 |
ngx_http_stub_status_module | 状态统计模块, 状态页 |
ngx_http_auth_basic_module | Web认证模块,使用basic机制进行用户认证 |
ngx_http_access_module | 四层基于IP的访问控制模块,用来控制网站用户对Nginx的访问;可以通过匹配客户端源IP地址进行限制 |
ngx_http_gzip_module | 文件的压缩功能,对Nginx返回的数据压缩 |
ngx_http_upstream_module | 负载均衡模块,提供服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_http_rewrite_module | 重定向模块,解析和处理rewrite请求 |
ngx_http_referer_module | 防盗链功能,基于访问安全考虑 |
ngx_http_proxy_module | proxy代理模块,将客户端的请求以http协议转发至指定服务器进行处理 |
ngx_http_ssl_module | ssl模块,用于加密的http连接,如https |
ngx_http_fastcgi_module | 将客户端对php的请求以fastcgi协议转发至指定服务器处理 |
ngx_http_uwsgi_module | 将客户端对Python的请求以uwsgi协议转发至指定服务器处理 |
ngx_http_flv_module | 为flv伪流媒体服务端提供支持 |
ngx_http_gzip_static_module | 静态压缩模块 |
ngx_http_limit_conn_module | 限制用户并发连接数及请求数模块 |
ngx_http_limit_req_module | 限制 Nginx request processing rate 根据定义的key |
ngx_http_headers_module | 可以实现对头部报文添加指定的key与值 |
ngx_stream_proxy_module | tcp负载,将客户端的请求以tcp协议转发至指定服务器处理 |
ngx_stream_upstream_module | 后端服务器分组转发、权重分配、状态监测、调度算法等高级功能 |
ngx_http_sub_module | |
ngx_http_random_index_module |
二、 Nginx内置变量
http核心模块的内置变量: http请求变量、 Nginx内置变量、 自定义变量$uri: 当前请求的uri, 不带参数 $request_uri: 请求的uri, 带完整参数 $request: Request请求行, GET等方法、http协议 $host: http请求报文中host首部, 如果没有则以处理请求的虚拟主机的主机名代替 $hostname: nginx服务运行在主机的主机名 $remote_addr: 客户端IP $remote_port: 客户端端口 $remote_user: 使用用户认证时,客户端用户输入的用户名 $request_filename:用户请求中的URI 经过本地root或 alias转换后映射的本地文件路径 $request_method: 请求方法, GET / POST / PUT $scheme: 在请求中使用scheme, 如 http://xxx.com 中的http $http_user_agent: http头部信息, 客户端访问设备 $server_addr: 服务器地址 $server_name: 服务器名称 $server_port: 服务器端口 $server_protocol: 服务器向客户端发送响应时的协议,如 http/1.1 http/1.0 $http_HEADER: 匹配请求报文中 指定的HEADER $http_host: 匹配请求报文中的 host 首部 $document_root: 当前请求映射到的root配置 $time_local: Nginx服务器的时间 $status: response返回状态码 $body_bytes_sent: 从服务端响应给客户端body信息大小 $http_referer: http上一级页面, 防盗链、用户行为 $http_x_forwarded_for: http请求携带的http信息
if ($http_user_agent ~ "Wget|ApacheBench") { set $block_user_agent 1; } if ($block_user_agent = 1) { return 403; }
[root@my-node51 ~]# curl http://192.168.6.10:8300/request_path/code/index.html d1-1
[root@my-node51 ~]# wget http://192.168.6.10:8300/request_path/code/index.html --2023-03-12 08:48:13-- http://192.168.6.10:8300/request_path/code/index.html 正在连接 192.168.6.10:8300... 已连接。 已发出 HTTP 请求,正在等待回应... 403 Forbidden 2023-03-12 08:48:13 错误 403:Forbidden。
set $ip '0'; if ($http_x_forward_for ~ 192.168.6.51) { set $ip 1; } if ($remote_addr ~ 192.168.6.51) { set $ip 1; } location /hello { if ($ip = "0") { return 403; } default_type application/json; return 200 '{"status": "success"}'; }
标签:13,http,请求,module,Nginx,模块,ngx From: https://www.cnblogs.com/kingdomer/p/15701595.html