
Nginx
文章平均质量分 67
Nginx
phygram
加油
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Nginx极客时间:postread阶段:获取真实客户端地址的realip模块
realip模块可以帮助我们获取真实的用户IP地址,这为后面的限速、限流等功能提供了可能性。问题:如何拿到真实的IP地址?其实从TCP连接的四元组中是可以拿到对端的IP地址和端口号的,但是问题在于,真实的网络中存在大量的反向代理和一些网络设备如交换机、路由器,所以到了Nginx就不能直接拿到客户端的IP地址了。这可以通过HTTP头部中提供的 X-Forwarded-For 和 X-Real_IP 来获得。二者的区别在于 X-Real-IP只能存储一个,而 X-Forwarded-For 可以存原创 2021-02-23 00:38:23 · 450 阅读 · 0 评论 -
Nginx极客时间:详解HTTP请求的11个阶段
除了 HTTP过滤模块 和 只提供变量的Nginx模块 之外,所有的HTTP模块必须从Nginx定义好的11个阶段进行请求的处理。所以每一个HTTP模块何时生效、有没有机会生效,都要看一个请求究竟处理到了哪一个阶段。Nginx是怎样定义这11个处理阶段的?(1)先来从一个示意图中看 一个请求是怎样在Nginx中被处理的:当一个请求进入到图中黄色的框 也就是Nginx之中时,先进行 “Read Request Headers”,即读取到请求的头部,并且决定使用哪一个server块的配置去处理这个请求原创 2021-02-23 00:14:24 · 1115 阅读 · 0 评论 -
Nginx极客时间:冲突的配置指令以谁为准
很多HTTP模块提供的指令,既可以出现在 http 、server、location、配置块中,当一个指令出现在多个配置块中的时候,有可能值是冲突的,应该以谁的值为准呢?1. 指令的Context:(指令所能出现的位置)“指令的Context” 是指 指令所能出现的上下文(配置块位置),例如上图中 “log_format” 这个指令的Context为“http”,则它只能出现在http{ } 配置块内,如果出现在其他配置块中,则Nginx在检查配置文件时就会报错,根本不能启动Nginx。2.原创 2021-02-21 23:13:52 · 759 阅读 · 1 评论 -
Nginx极客时间:所有worker进程协同工作的关键:共享内存
Nginx进程间的通信方式主要有两种,一种是信号,另一种是共享内存。信号 主要用于 进程管理,如果是进程间需要共享数据,则只能使用 共享内存。为了使用好共享内存,就会引入两个问题:第一个问题是 锁:共享内存有同时读写的情况,多进程同时操作一块内存, 一定会出现竞争关系,所以必须要加锁。目前的Nginx中的锁都是基于Linux的 自旋锁 实现的,早起的Nginx还有基于基于Linux系统中的信号量的锁。信号量是Linux中一种比较久远的进程同步方式,它会导致进程进入休眠状态,随即发生主动切换。自旋原创 2021-02-21 18:47:31 · 475 阅读 · 0 评论 -
Nginx极客时间:Nginx如何通过连接池处理网络请求
在 nginx.conf 配置文件中有这样一个配置项:events { wocker_connections 1024;}这一配置项表示Nginx的最大并发连接数为1024,那么它会怎样的影响到Nginx的实现流程呢?typedef struct ngx_cycle_s ngx_cycle_t;struct ngx_cycle_s { ngx_connection_t *connections; ngx_event_t *read_events; ngx_event_t *wr原创 2021-02-21 17:23:31 · 400 阅读 · 0 评论 -
Nginx极客时间:Nginx模块的分类
在前文 Nginx极客时间:Nginx的模块究竟是什么 中已经提到表示Nginx模块的结构体 ngx_module_t 中的成员 type 字段表示本模块所属的子模块类型。Nginx中共有 6 种类型的模块:原创 2021-02-21 16:35:04 · 281 阅读 · 0 评论 -
Nginx极客时间:Nginx的模块究竟是什么
Nginx之所以有如此多的特性,是因为有大量的开发者在为其开发第三方模块,Nginx的模块化设计架构非常优良,那么究竟要如何表示一个模块吗?Nginx模块是怎么定义的:Nginx对模块做了高度抽象,每一个模块都用一个 ngx_module_t 结构体来表示。typedef struct ngx_module_s ngx_module_t;struct ngx_module_s { };...原创 2021-02-21 16:01:23 · 306 阅读 · 3 评论 -
Nginx极客时间:使用信号管理Nginx的父子进程
使用信号管理Nginx的父子进程:Nginx多进程之间进行通信可以使用 共享内存、信号 等方式,当做进程间的管理时,通常只使用 信号 的方式。Nginx中存在的信号主要有以下几种:其中,蓝色部分的信号是可以通过Nginx命令行 -s 加特定命令发出的,红色部分的信号只能通过 kill 命令加信号的方式直接发出。1. Master进程处理的信号:CHLD 信号:Master进程管理Worker进程的主要方式就是通过监听CHLD信号。Linux操作系统规定,当子进程退出时,会向父进程发送CH原创 2021-02-19 02:13:46 · 656 阅读 · 0 评论 -
Nginx极客时间:Nginx的进程结构
1. Nginx进程结构:Nginx有两种进程结构:一种是 单进程结构,一种是 多进程结构。单进程结构实际上不适用于生产环境,只适合在开发、调试时使用。这是因为在生产环境中需要保证Nginx足够健壮,且能够充分利用 CPU多核的特性。因此默认配置中也是打开多进程的Nginx。2. Nginx多进程结构:Nginx多进程结构下,进程种类有三类:master进程 + worker进程 + cache进程Master进程的功能是用来管理Worker进程,真正处理用户请求的是Worker进程,M原创 2021-02-19 01:18:35 · 392 阅读 · 0 评论 -
Nginx极客时间:用GoAccess实现可视化实时监控access日志
使用GoAccess工具实现可视化实时监控access日志:Nginx生成的access日志文件 access.log 信息较多,借助GoAccess工具可以在本地浏览器上进行图形可视化的、实时的日志监控。1. 安装GoAccess:可在GoAccess官网上下载源码编译安装,也可借助 yum install 安装。https://goaccess.io/download2. 配置GoAccess:https://goaccess.io/get-startedGoAccess有三种使用方法原创 2021-02-18 15:14:40 · 569 阅读 · 0 评论 -
Nginx极客时间:用Nginx搭建一个具备缓存功能的反向代理服务
0. 一个具备 缓存功能的 反向代理服务器配置文件实例:worker_processes 1;events { worker_connections 1024;}http { upstream local { server 127.0.0.1:8000; } proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off原创 2021-02-18 14:17:11 · 211 阅读 · 0 评论 -
Nginx极客时间:用Nginx搭建一个可用的静态资源Web服务器
0. 一个Nginx静态资源Web服务器的配置文件示例:worker_processes 1;events { worker_connections 1024;}http { #include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_b原创 2021-02-17 18:07:28 · 326 阅读 · 0 评论 -
Nginx极客时间:Nginx命令行及演示:重载、热部署、日志切割
Nginx命令行及演示:重载、热部署、日志切割启动Nginx重载:./nginx -s reload在修改 conf/nginx.conf 配置文件中的某些配置项后,可以在不停止对客户的服务的情况下重载配置项。热部署:热部署是指用新版本的nginx 替换正在运行的 旧版本的nginx,在不停止服务的情况下。只需要替换编译出来的 nginx 二进制可执行文件,其余文件都不需要更换。第一步:备份旧有的nginx文件,cp nginx nginx.old第二步:用新的nginx文件替换.原创 2021-02-16 03:00:07 · 257 阅读 · 0 评论 -
Nginx极客时间:配置文件的通用语法
Nginx配置语法:Nginx的 nginx.conf 配置文件是一个 ASCII 的文本文件,配置文件的语法如下:配置文件由 指令 和 指令块 组成;每条指令以 ; 分号结尾,指令与参数间以空格符号分隔;指令块以 { } 大括号将多条指令组织在一起;include语句允许组合多个配置文件以提升可维护性;使用 # 符号添加注释,提高可读性;使用 $ 符号使用变量;部分指令的参数支持正则表达式。Nginx语法示例:http { include mime.types; upst原创 2021-02-16 00:29:09 · 359 阅读 · 0 评论 -
Nginx极客时间:编译出适合自己的Nginx
编译Nginx主要分为以下六个部分:1. 下载Nginx:从Nginx官方网站中下载压缩包即可。也可使用 wget 命令的方式进行下载:Unix > wget http://nginx.org/download/nginx-1.14.0.tar.gzwget 命令:wget是Linux中的一个下载文件的工具,支持通过HTTP、HTTPS、FTP三个最常见的 TCP/IP协议下载。2. 介绍各目录:解压下载的Nginx压缩包后,在Nginx的目录中可以看到主要包含以下几个部分:au原创 2021-02-15 22:56:12 · 364 阅读 · 0 评论 -
Nginx极客时间:初识Nginx
1. Nginx适用于那些场景:主要有三个应用:静态资源、API服务、反向代理。(1)反向代理:因为 “应用服务” 要求 开发效率 非常高,所以它的 运行效率 是很低的,它的 QPS、TPS、并发 都受限,所以需要把很多的 应用服务 组成一个集群,向用户提供高可用性(即上游应用服务器集群,如 Tomcat)。一旦很多应用服务构成了集群,就需要 Nginx 作为反向代理,它可以把用户的动态请求传导给应用服务。Nginx的反向代理功能会引申出另外一个功能:缓存加速。所谓缓存加速的目的是为了:Ng原创 2021-02-15 21:16:12 · 295 阅读 · 2 评论 -
Nginx如何使用FastCGI
Nginx与FastCGI原创 2020-12-04 00:45:43 · 4839 阅读 · 0 评论 -
Nginx配置日志(error_log/access_log)
Nginx配置日志原创 2020-12-01 21:18:06 · 6900 阅读 · 1 评论 -
Nginx configure 命令参数
Nginx configure 详解原创 2020-12-01 20:42:01 · 939 阅读 · 0 评论 -
Nginx初步(反向代理/Web服务器/轻量级)
一、Nginx是什么:Nginx的定义:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。先来弄懂几个定义:(1)反向代理:什么是反向代理?什么是正向代理?反向代理隐藏真实服务器,正向代理隐藏真实客户端。代理的关键,就是隐藏(类比于房屋代理,各种代理商,都是在买家与卖家之间的一层隔离,买家看不到真正的卖家,好像是在与代理直接做交易),隐藏真实的发出网络请求的一方。我们常说的代理都是正向代理,正向代理隐藏真实的客户端,原创 2020-11-25 00:49:13 · 469 阅读 · 1 评论 -
Nginx配置反向代理服务器(HTTP proxy module)
1原创 2020-11-29 22:32:59 · 783 阅读 · 0 评论 -
Nginx配置静态Web服务器(使用ngx_http_core_module模块)
1原创 2020-11-29 15:58:45 · 634 阅读 · 0 评论 -
Nginx配置文件编写(基础配置)
master - worker 模型configure – helpNginx配置的通用语法:手写一个Nginx的基础配置文件:my_conf linux云桌面中已经实现# 注意浏览器访问时要访问 8888 端口两个不同目录下的conf有啥区别?./nginx -c 参数什么意义?运行起来的命令是:./sbin/nginx -c my_conf/my_conf.conf源码搜索 proxy_pass 搜到 nginx 反向代理的原理跳转 与 代理...原创 2020-11-29 14:48:43 · 28951 阅读 · 0 评论