设为首页 收藏本站
查看: 293|回复: 0

[经验分享] Nginx源码分析(一)

[复制链接]

尚未签到

发表于 2016-12-24 07:08:15 | 显示全部楼层 |阅读模式
  http://www.codeman.net/

Nginx源码分析(一)

2012年3月12日niesongsong
没有评论

  1.错误定义
  分析源码从最简单的地方入手,首先来看nginx的错误码定义,代码在ngx_errno.h,ngx_errno.h文件中。一共就两个函数。



  • u_char*ngx_strerror(ngx_err_terr,u_char*errstr,size_tsize);

  • ngx_uint_tngx_strerror_init(void);
  系统启动时会初始化全局变量ngx_sys_errlist,这是一个全局ngx_str_t数组,数组大小为NGX_SYS_NERR,每个元素都一个结构体为:



  • typedefstruct{

  • size_tlen;//data成员的大小

  • u_char*data;//一个字符串

  • }ngx_str_t;
  初始化:ngx_uint_t ngx_strerror_init

所以初始化的函数是填充每一个元素,该元素的数组下标即为错误码,元素len成员是指元素data字符串的大小,data是该错误码(数组下标)的文字描述,通过函数strerror(err)来取得错误码的信息串。

获取错误码对应的信息串:ngx_strerror

在ngx_sys_errlist找到err对应位置的错误信息,如果错误码不在数组下标范围则返回未知错误,同时检查传入的长度,太小于将会截断错误信息串。



分类: Linux,
Nginx
标签:




在windwos下的编译Nginx

2012年2月28日niesongsong
没有评论

  在windows下编译nginx可以利用VC编译来调试nginx,当我们很熟悉了操作系统上层的实现之后转向分析nginx代码也方便一些。

在windows下编译nginx跟在Linux下的步骤差不多。利用svn工具下载源码,第三方网站下载的tar文件中没有win32的配置文件;由于configure文件是sh脚本,所以只能用第三方仿真软件,我这里用的是MinGW Shell;配置完成后就是编译,只要调用VC的编译工具cl.exe编译就行了。
  下载工具

需要的工具有:

1.TortoiseSVN:http://downloads.sourceforge.net/project/tortoisesvn/1.7.5/Application/TortoiseSVN-1.7.5.22551-win32-svn-1.7.3.msi

2.MinGW32:http://10.10.4.6/download/7377061/8602355/3/exe/230/40/1322227850470_40/mingw-get-inst-20111118.exe

3.VC2010 express:http://download.microsoft.com/download/e/5/e/e5e362e1-6a2a-4ce3-bbac-659c9740ab04/vc_web.exe

上面的工具下载安装完成即可。
  下载源码

源码地址在:svn://svn.nginx.org/nginx/trunk 使用svn将源码检出到本地任意目录,比如f:\nginx\trunk

目录结构如下:

f—nginx—trunk—(auto conf contrib docs misc src)
  配置代码环境

打开cmd命令行提示:

cmd
  2.设置VC的环境变量:在命令提示符中键入命令(根据VC的安装目录不同而不同,x86为参数)

"C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
  设置MinGW:在命令提示符键入命令(根据MinGW32安装目录不同而不同):

C:\MinGW\msys\1.0\msys.bat
  检查环境:

弹出MinGW窗口,关闭其它的cmd窗口。在MinGW32的窗口输入:

cl.exe
  有如下显示:

用于 80×86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版

版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项... ] 文件名… [ /link 链接选项... ]

说明编译环境配置成功

编译

cd进入主目录,即truck目录

cd /f/nginx/trunk
  配置:

./auto/configure --prefix=. --with-cc-opt="-D FD_SETSIZE=4096" --without-http_rewrite_module --without-http_gzip_module --with-cc=cl
  注解:

–prefix=. 表示安装目录在本目录下

–with-cc-opt=”-D FD_SETSIZE=4096″ 预定义宏FD_SETSIZE大小4096

–without-http_rewrite_module 不加载rewite模块

–without-http_gzip_module 不加载gzip模块

–with-cc=cl 编译器为cl

编译:

nmake
  在obj/目录下为生成的中间文件和nginx.exe文件。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-318506-1-1.html 上篇帖子: nginx Lighttpd Apache 性能测试 下篇帖子: 利用nginx加速web访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表