lx86 发表于 2018-11-8 12:06:27

nginx编译及参数详解

  说明:蓝色=命令名称
  浅绿=命令参数
  浅蓝=选项
  紫色=目录
  系统环境:CentOS5.7 i686
  nginx作为现在比较热门的web服务软件,很多人都在用,本人也用了快两年了,最近朋友问了我几个关于nginx编译的问题,问的我哑口无言,特测试了一下得出了一些小结论发表出来和大家一起探讨。
  朋友问的问题:
  1)、nginx 编译时都需要哪些参数 2)、nginx 默认编译(不加任何 --with 和--with-out )有哪些功能 3)nginx 默认用的什么io接口
  测试之旅(先从第二个问题开始,第一个见后文总结):
  问题二    分别编译5次nginx 编译参数如下:
  a: ./configure --prefix=/usr/local/nginx_01 --user=www --group=www
  b: ./configure --prefix=/usr/local/nginx_02 --user=www --group=www --with-http_ssl_module
  c: ./configure --prefix=/usr/local/nginx_03 --user=www --group=www --with-poll_module --with-http_ssl_module
  d: ./configure --prefix=/usr/local/nginx_04 --user=www --group=www --without-http_ssi_module
  编译安装后查看nginx 的大小如图:
  分析: 默认参数大小为 655K,添加一个--with (--with-http_ssl_module)大小为 701K > 655K ,添加两个--with(--with-poll_module --with-http_ssl_module ) 大小为 704 > 701K,添加--without-http_ssi_module大小为 642K < 655K
  结论:带有--with-out 的参数为nginx默认编译所带的功能(个别除外如: --without-poll_module 、--without-select_module),带有 --with的参数 是需要手动添加的功能。
  问题三编译安装nginx 参数如下:
  f:./configure --prefix=/usr/local/nginx_06 --user=www --group=www --with-select_module --with-poll_module
  g:./configure --prefix=/usr/local/nginx_07 --user=www --group=www --without-select_module--without-poll_module
  安装完毕后产看nginx_01,nginx_06,nginx_07配置文件中events{}段的内容如下:

  分三次启动nginx_01,nginx_06,nginx_07 并追踪查看如图:

  注:三个结果都是epoll,此只列出一个。
  分别在nginx_01,nginx_06,nginx_07的 events{}段中加入 &quot; use poll; &quot; : sed -i '/events/a use poll;' /usr/local/nginx_0/conf/nginx.conf

  启动nginx_01 : /usr/local/nginx_01/sbin/nginx无法启动结果如图:

  启动nginx_06: /usr/local/nginx_06/sbin/nginx正常启动,strace结果如图:

  启动nginx_07 : /usr/local/nginx_07/sbin/nginx无法启动结果如图:
  查看nginx_01,nginx_06,nginx_07三个的/sbin/nginx大小:

  结论:nginx默认安装不修改配置文件io接口为 epoll ,若用其他io接口需在编译时加入 --with 参数,nginx默认安装与加( --without-select_module--without-poll_module )等参数时一样,不支持其他io接口。
  补充:nginx参数详解
  ./configure --help
  --help 显示本提示信息
  --prefix=PATH 设定安装目录
  --sbin-path=PATH 设定程序文件目录
  --conf-path=PATH 设定配置文件(nginx.conf)目录
  --error-log-path=PATH 设定错误日志目录
  --pid-path=PATH 设定pid文件(nginx.pid)目录
  --lock-path=PATH 设定lock文件(nginx.lock)目录
  --user=USER 设定程序运行的用户环境(www)
  --group=GROUP 设定程序运行的组环境(www)
  --builddir=DIR 设定程序编译目录
  --with-rtsig_module 允许rtsig模块
  --with-select_module 允许select模块(一种轮询模式,不推荐用在高载环境)
  --without-select_module 不使用select模块
  --with-poll_module 允许poll模块(一种轮询模式,不推荐用在高载环境)
  --without-poll_module 不使用poll模块
  --with-http_ssl_module 允许ngx_http_ssl_module模块(Apache对应:mod_ssl)
  --with-http_realip_module 允许ngx_http_realip_module模块(mod_rpaf)
  --with-http_addition_module 允许ngx_http_addition_module模块(mod_layout)
  --with-http_xslt_module 允许ngx_http_xslt_module模块
  --with-http_sub_module 允许ngx_http_sub_module模块
  --with-http_dav_module 允许ngx_http_dav_module模块(mod_dav)
  --with-http_flv_module 允许ngx_http_flv_module模块(mod_flvx)
  --with-http_gzip_static_module 允许ngx_http_gzip_static_module模块(mod_dflate)
  --with-http_random_index_module 允许ngx_http_random_index_module模块(mod_autoindex)
  --with-http_stub_status_module 允许ngx_http_stub_status_module模块(mod_status)
  --without-http_charset_module 不使用ngx_http_charset_module模块
  --without-http_gzip_module 不使用ngx_http_gzip_module模块
  --without-http_ssi_module 不使用ngx_http_ssi_module模块
  --without-http_userid_module 不使用ngx_http_userid_module模块
  --without-http_access_module 不使用ngx_http_access_module模块
  --without-http_auth_basic_module 不使用ngx_http_auth_basic_module模块
  --without-http_autoindex_module 不使用ngx_http_autoindex_module模块
  --without-http_geo_module 不使用ngx_http_geo_module模块
  --without-http_map_module 不使用ngx_http_map_module模块
  --without-http_referer_module 不使用ngx_http_referer_module模块
  --without-http_rewrite_module 不使用ngx_http_rewrite_module模块
  --without-http_proxy_module 不使用ngx_http_proxy_module模块
  --without-http_fastcgi_module 不使用ngx_http_fastcgi_module模块
  --without-http_memcached_module 不使用ngx_http_memcached_module模块
  --without-http_limit_zone_module 不使用ngx_http_limit_zone_module模块
  --without-http_empty_gif_module 不使用ngx_http_empty_gif_module模块
  --without-http_browser_module 不使用ngx_http_browser_module模块
  --without-http_upstream_ip_hash_module 不使用ngx_http_upstream_ip_hash_module模块
  --with-http_perl_module 允许ngx_http_perl_module模块
  --with-perl_modules_path=PATH 设置perl模块路径
  --with-perl=PATH 设置perl库文件路径
  --http-log-path=PATH 设置access log文件路径
  --http-client-body-temp-path=PATH 设置客户端请求临时文件路径
  --http-proxy-temp-path=PATH 设置http proxy临时文件路径
  --http-fastcgi-temp-path=PATH 设置http fastcgi临时文件路径
  --without-http 不使用HTTP server功能
  --with-mail 允许POP3/IMAP4/SMTP代理模块
  --with-mail_ssl_module 允许ngx_mail_ssl_module模块
  --without-mail_pop3_module 不允许ngx_mail_pop3_module模块
  --without-mail_imap_module 不允许ngx_mail_imap_module模块
  --without-mail_smtp_module 不允许ngx_mail_smtp_module模块
  --with-google_perftools_module 允许ngx_google_perftools_module模块(调试用)
  --with-cpp_test_module 允许ngx_cpp_test_module模块
  --add-module=PATH 允许使用外部模块,以及路径
  --with-cc=PATH 设置C编译器路径
  --with-cpp=PATH 设置C预处理路径
  --with-cc-opt=OPTIONS 设置C编译器参数
  --with-ld-opt=OPTIONS 设置连接文件参数
  --with-cpu-opt=CPU 为指定CPU优化,可选参数有:
  pentium, pentiumpro, pentium3, pentium4,
  athlon, opteron, sparc32, sparc64, ppc64
  --without-pcre 不使用pcre库文件
  --with-pcre=DIR 设定PCRE库路径
  --with-pcre-opt=OPTIONS 设置PCRE运行参数
  --with-md5=DIR 设定md5库文件路径
  --with-md5-opt=OPTIONS 设置md5运行参数
  --with-md5-asm 使用md5源文件编译
  --with-sha1=DIR 设定sha1库文件路径
  --with-sha1-opt=OPTIONS 设置sha1运行参数
  --with-sha1-asm 使用sha1源文件编译
  --with-zlib=DIR 设定zlib库文件路径
  --with-zlib-opt=OPTIONS 设置zlib运行参数
  --with-zlib-asm=CPU 使zlib对特定的CPU进行优化,可选参数:
  pentium, pentiumpro
  --with-openssl=DIR 设定OpenSSL库文件路径
  --with-openssl-opt=OPTIONS 设置OpenSSL运行参数
  --with-debug 允许调试日志
  nginx编译时不是功能加的越多越好,应该尽可能少编译模块,不用的最好不要加入。个模块功能参考《实战Nginx_取代Apache的高性能Web服务器》。
  结束语:本测试只是个人推论猜想,非官方结论,欢迎大牛指点。
  编译好的nginx可通过 /usr/local/nginx/sbin/nginx -V 查看编译时的参数(具体路径更具实际情况而定)

页: [1]
查看完整版本: nginx编译及参数详解