首页 > 系统相关 >Nginx - HTTP模块

Nginx - HTTP模块

时间:2023-08-08 14:57:38浏览次数:45  
标签:HTTP 请求 zone auth Nginx limit 模块 name

接收请求

image

image

Nginx在接收到请求头中的Host字段时,会和conf里面的server_name进行匹配,匹配上了之后,server_name的其他指令块就可以使用了。

HTTP请求的11个阶段

image

11个阶段

  1. POST_READ realip
  2. SERVER_REWRITE
  3. FIND_CONFIG
  4. REWRITE
  5. POST_REWRITE
  6. PREACCESS limit_conn, limit_req
  7. ACCESS auth_basic, access, auth_request
  8. POST_ACCESS
  9. PRECONTENT try_files
  10. CONTENT index, concat, 反向代理
  11. LOG access_log
    image

realip

  • 如何拿到真实的用户IP地址
    image

rewrite

return指令与error_page
syntax e.g.
return code [text] 301 http1.0永久重定向,浏览器写缓存; 302 临时重定向,禁止被缓存
error_page code [=[response]] uri
rewrite指令
syntax e.g.
rewrite regex replacement [flag]

find_config

找到处理请求的location指令块,location匹配规则:仅匹配URI,忽略参数
image

preaccess

limit_conn

限制并发连接数,生效范围:全部worker进程(基于共享内存)
limit_conn_zone key zone=name:size
limit_conn zone number

limit_req

限制每个客户端每秒处理请求数,生效算法:leaky bucket
image

limit_req_zone key zone=name:size rate=rate
limit_req zone=name [burst=number][nodelay]

access

限制某些ip地址的访问权限
allow addr
deny addr

auth_basic模块基于HTTP Basic Authentication协议进行用户名密码认证
auth_request模块向上游的服务转发请求,若上游服务返回的响应码是2xx,则继续执行,若上游服务返回的是401或者403则将响应返回给客户端。原理:收到请求后生成子请求,通过反向代理技术把请求传递给上游服务
access阶段的satisfy指令

precontent

try_files file ... uri 依次查找文件,找到就返回否则返回uri或code
mirror uri 处理请求时,生成子请求访问其他服务,对子请求的返回不做处理 流量拷贝

content

root, alias

过滤模块

image

sub_filter将返回的字符串替换
add_before_body, add_after_body在响应前后添加内容

referer模块

简单有效的防盗链手段
场景:某网站通过url引用了你的页面,当用户在浏览器上点击url时,http请求的头部中会通过referer头部,将该网站当前页面的url带上,告诉服务器本次请求是由这个页面发起的。
目的:拒绝非正常的网站访问我们站点的资源
valid_referers
image

对客户端的http keepalive

功能:多个http请求通过复用TCP连接。可以减少握手次数,减少并发连接数减少了服务器资源消耗,降低TCP拥塞控制影响。
Connection头部:close/keepalive
Keep-Alive头部:timeout=n 连接至少保持多少秒

标签:HTTP,请求,zone,auth,Nginx,limit,模块,name
From: https://www.cnblogs.com/rachel-aoao/p/nginx_http_module.html

相关文章

  • windows下常用的nginx命令
    startnginx:启动nginxnginx.exe-cconf/nginx.conf按照指定配置去启动nginxnginx-t-cconf/nginx.conf :检测nginx是否配置正确nginx-sreload :修改配置后重新加载生效nginx-sstop :快速停止nginx,可能并不保存相关信息.nginx-s quit :完整有序的停止ngi......
  • Nginx实现静态资源服务器
    我们在上一篇文章中已经分析了实现静态资源服务器的多种思路。本篇文章记录使用Nginx实现静态资源服务器的步骤。首先需要安装Nginx和了解Nginx的配置文件。CentOS系统可参考如下帖子:Nginx-------Nginx的安装和多域名配置Nginx安装好能正常运行后我们来尝试配置静态资源服务器。......
  • linux进阶:内核模块
    现代内核派系宏内核关键功能(基本功能,不可裁剪、扩展)和服务功能(如文件系统、设备驱动、网络服务等,可裁剪、扩展)均在内核空间提供。运行效率高。扩展性较差。systemcall(系统调用)能够先入内核态来使用内核提供的服务。微内核内核空间只提供关键功能,服务功能在用户空间提供。......
  • 人人贷(中js逆向学会模块改写(define/require/exports/module)
    链接https://renrendai.com/login?returnUrl=%2F这里逆向登入中的password加密 我们需要定位到password加密到位置,通过下面的搜索j_password,或者通过栈调用方式查找 可以看到加密的是这种模式define("common:node_modules/glpb-components-common/src/rsa/rsaCrypt",f......
  • centos安装php php-fpm 以及 配置nginx
    下载php源码包http://www.php.net/downloads.php安装phptar-xvfphp-5.5.13.tar.bz2cdphp-5.5.13./configure--prefix=/usr/local/php--with-config-file-path=/etc--enable-inline-optimization--disable-debug--disable-rpath--enable-shared--enable-opcache--......
  • Java HTTP请求封装的方法及实现
    JavaHTTP请求封装的方法及实现在Java开发中,我们经常需要与服务器进行数据交互,发送HTTP请求是其中常见的一种方式。为了简化开发过程,我们可以封装HTTP请求的方法,让调用者只需要关注业务逻辑而不用关心底层的细节实现。本文将介绍一种基于Java的HTTP请求封装方法及其实现。JavaHT......
  • Java HTTP请求 如何获取并解析返回的HTML内容
    JavaHTTP请求如何获取并解析返回的HTML内容在Java开发中,经常会遇到需要获取网页内容的情况。而HTTP请求是实现这一目标的常用方法之一。本文将介绍如何使用Java进行HTTP请求,并解析返回的HTML内容。JavaHTTP请求如何获取并解析返回的HTML内容首先,我们需要导入相关的Java类库:j......
  • Java HTTPS如何加载证书
    JavaHTTPS如何加载证书在进行Java编程开发中,经常会涉及到使用HTTPS协议进行安全通信。而HTTPS的安全性是建立在数字证书的基础上的,因此在Java中加载证书是一个非常重要的步骤。本文将围绕“JavaHTTPS如何加载证书”这一主题,为大家介绍一种简洁、高效的加载证书的方法。JavaHTTP......
  • Nginx 体系化之配置文件重载(平滑升级)原理
    Nginx作为一款高性能的开源Web服务器,以其出色的性能和灵活的配置而备受青眯,在Nginx中,配置文件有着决定性的作用,而配置文件的重载机制更是保障系统稳定运行的关键。本文将讲解一下Nginx配置文件重载的核心原理,以及讲述实际场景的应用Nginx配置文件重载原理1.Nginx配置文件......
  • Nginx 体系化之 Nginx 进程结构
    当谈论高性能Web服务器时,Nginx(发音为“engine-x”)无疑是一个不可忽视的名字。Nginx是一个轻量级、高性能的开源Web服务器软件,其独特的进程结构是其卓越性能的关键所在。Nginx进程结构解析:高性能的背后Nginx采用了一种非传统的进程模型,它通过事件驱动和非阻塞的方式实现高效......