- 博客(25)
- 收藏
- 关注

原创 nginx源码分析之启动流程---主框架
ngx_master_process_cycle该方法展示了master进程是如何工作的1 载入信号量master不需要处理网络事件,只需要通过管理worker进程来实现重启服务,平滑升级,更换日志文件,配置文件等等功能。nginx检查以下标志位: sigemptyset(&set); sigaddset(&set, SIGCHLD); sigadd...
2019-05-03 18:27:59
285
原创 nginx关于add_header的坑
一 场景1nginxA作为反向代理,nginxB作为web服务。其中 nginxA 的日志格式需要打印上游返回的Server头:xes-app : $http_upstream_server另外A的location配置如下: location /servertag { default_type text/plain; p...
2020-08-06 10:11:54
37304
1
原创 nginx源码分析之启动流程---http框架
一 http框架在哪里启动在nginx源码分析之启动流程—主框架中,我们知道会调用ngx_conf_parse来解析配置文件,该函数中会通过一个无限的for循环,调用ngx_conf_read_token来一行行的解析。解析完成之后又会调用ngx_conf_handler来进一步处理该指令,而在ngx_conf_handler中,会遍历ngx_modules[]数组,找到对该函数感兴趣的模块,...
2019-07-08 00:27:54
387
原创 nginx源码分析----解析upstream配置
nignx解析配置文件时,当遇到一下配置时,会做哪些事情?upstream test.balancer.com { 1.1.1.1:80; 2.2.2.2:80;}一、 存储upstream配置的三大结构体首先需要解决upstream配置的存储问题,nginx是通过ngx_http_upstream_main_conf_t,ngx_http_upstream_srv_conf...
2019-06-30 19:25:37
1195
原创 Linux系统编程:signal、sigaction、sigpending、sigprocmask函数
一、signal作用:设置信号处理方式,当进程接收到信号时,指定特定的handler方法来处理信号(只起一次作用)。头文件 #include<signal.h>定义函数 void (*signal(int signum,void(* handler)(int)))(int);函数说明 signal()会依参数signum 指定的信号编号来...
2019-06-26 20:48:46
331
原创 Linux系统编程:raise函数、wait函数、waitpid函数
wait()函数说明wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。waitpid()函数说明:waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若干选项,如可提...
2019-06-18 20:58:29
821
原创 Linux系统编程:kill函数
参数:pid:可能选择有以下四种pid大于零时,pid是信号欲送往的进程的标识。pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。pid小于-1时,信号将送往以-pid为组标识的进程。sig:准备发送的信号代码,假如其值为零则没有任何信号送出,但是系统会执行错误检查...
2019-06-17 20:51:04
478
原创 orange的安装
一、 安装lor # git clone https://github.com/sumory/lor.git # cd lor # make install二、 导入orange的数据库orange项目install文件下有orange的数据库sql文件,选择最新版本导入到本地mysql git clone https://github.com/sumory/orange.git...
2019-06-03 10:27:01
3598
原创 nginx源码分析四----重要的函数
与处理请求有关ngx_http_output_filter作用: 发送HTTP响应的包体内容位置: ngx_http_core_module.c原型:ngx_int_tngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in){ ngx_int_t rc; ngx_connection...
2019-05-25 21:18:30
375
原创 nginx源码分析五---- 重要的回调函数
异步非阻塞的实现关键nginx能保持全异步的事件驱动框架,关键在于各种callback函数,这些增加了编码的难度,但是却能够保证nginx进程在执行的过程中,不会因为一个阻塞的调用导致进程进入休眠状态。ngx_http_client_body_handler_pt描述: nginx在接受完完整的请求body后回调该函数。调用: ngx_http_read_client_request_bo...
2019-05-25 20:52:48
558
原创 nginx源码分析三----高级数据结构
一、 与框架相关ngx_cycle_tstruct ngx_cycle_s {//保存存储所有模块的配置项的结构体指针//之所以是4级指针,是因为conf_ctx首先是一个数组//然后存储的元素是指针,该指针又指向另外一个指针数组void ****conf_ctx;//内存池ngx_pool_t *pool;/* 在还...
2019-05-25 20:22:47
277
原创 php中display_errors的坑
问题描述:公司线上出现一个问题:后端的服务是nginx+php模式,php程序已经内存溢出了,但是通过nginx访问的时候,返回的还是HTTP 200 OK。问题原因:经过查阅资料发现,在php-fpm的运行模式下,错误信息的显示是和php的配置display_errors有关。关于display_errors的配置有三处,分别为php-fpm.conf,php.ini以及程序里通过ini...
2019-04-18 11:09:15
9195
原创 C语言基础: printf ,sprintf , fprintf
printf : 往标准屏幕输出sprintf :输出到指定的字符数组fprintf : 输出到指定文件示例代码:int main () { int d = 10; char a = 'a'; char buf[] = "hello"; char dst[100]; printf("d=%d,a=%c,buf=%s",d,a,buf); sprintf(dst,"d=%d,a...
2019-04-15 23:29:38
248
原创 C语言基础: 标准字符串输入输出函数
一 标准输入函数scanf,gets,fgets()scanf :1 不能接收空格,tab、换行等字符示例代码: char buf[100]]; printf("请输入字符串buf:\n"); //输入 hello world scanf("%s",buf); printf("buf=%s",buf); //buf=hello, ...
2019-04-14 20:41:45
2206
原创 php问题记录
问题记录:1 打开网关后台监控,返回500内部错误。解决方法:1 修改php.ini:将memory_limit = 50M 修改为了 500Mphp-fpm参数设置:将pm.max_children由537个修改为了20个...
2019-02-25 15:42:18
169
原创 nginx总结第四章----nginx模块与指令详解
四 nginx模块官方提供了5个类型的模块:核心模块、配置模块、事件模块、http模块、mail模块。 配置模块主要负责解析nginx.conf文件,是其他模块的基础,该类模块中只有一个ngx_conf_module模块; 核心模块主要负责定义除配置模块之外的其他模块,该类模块中有6个核心模块。 ngx_mail_module负责定义mail模块; ...
2019-02-17 13:01:31
877
原创 nginx总结
一 安装与配置nginx定位:web服务器,负载均衡器(反向代理服务器),缓存服务器,电子邮件服务器安装nginx编译第三方模块eg: nginx编译ngx_http_upstream_consistent_hash模块: 查看当前版本的nginx的编译配置: /usr/local/nginx/sbin/nginx -V--------- 下载ngx_http_upst...
2019-02-14 15:48:59
2063
转载 nginx各buffering的配置
一 接收客户端client请求是的buffer配置 client_header_buffer_size large_client_header_buffers client_body_buffer_size client_max_body_size 二 反向代理时的buffer配置 1 2 3 4 5 ...
2019-02-14 11:48:01
681
原创 nginx反向代理的流程
nginx反向代理的流程如下:1 proxy_request_buffering 指令:on表示nginx接收完完整的body后才和upstream建立连接,off则是先建立连接,然后发送请求的时,一遍从下游读取body,一遍往上游转发。默认情况下是on,即nginx先生成要发往上游的包体,然后才去和上游建立连接。这样做是为了不耽误时间,不占用较长时间连接。因为一边读一边转发的问题是,一...
2019-02-14 11:01:24
1781
原创 java中基本数据类型的存储与转换
一、java中八大基本数据类型所占内存大小 从小到大的排序分别是:(记住是11224488就容易记忆了)boolean:理论上只需要一个字符(1/8个字节),但实际按照一个字节处理。byte:1个字节(-128~127)char:2个字节short: 2个字节float:4个字节int:4个字节double:8个字节long:8个字节二、java的数据在内存
2017-10-06 15:03:42
447
原创 java线程池
一、在使用线程池之前先考虑几个问题: 1、线程的生命周期是怎样的? 线程分的状态有以下几个: new:新建状态 Runnable:可运行状态(就绪状态) Running:运行状态 Blocked:阻塞状态 Dead:死亡状态 注意以下几点: 1)、我们在new 一个线程之后,调用它的start()方法,这个时候线程并不
2017-09-30 21:01:02
254
原创 java实现二叉树的创建和各种遍历操作
本文是关于查找二叉树的创建和各种遍历操作。 import java.lang.Thread.State; import java.text.spi.NumberFormatProvider; import java.util.LinkedList; import java.util.Queue; import java.util.Stack;import javax.print.attri
2017-09-30 19:41:03
331
原创 二叉树的创建与遍历
import java.lang.Thread.State;import java.text.spi.NumberFormatProvider;import java.util.Stack;import javax.print.attribute.standard.NumberOfDocuments;import org.w3c.dom.NodeList;
2017-09-30 15:29:25
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人