nginx( 二 )


结构与扩展一个主进程和多个工作进程 。工作进程是单执行绪的,且不需要特殊授权即可运行;kqueue (FreeBSD 4.1+),epoll (Linux 2.6+),rt signals (Linux 2.2.19+),/dev/poll (Solaris 7 11/99+),select,以及 poll 支持;kqueue支持的不同功能包括 EV_CLEAR,EV_DISABLE (临时禁止事件),NOTE_LOWAT,EV_EOF,有效数据的数目,错误代码;sendfile (FreeBSD 3.1+),sendfile (Linux 2.2+),sendfile64 (Linux 2.4.21+),和 sendfilev (Solaris 8 7/01+) 支持;输入过滤 (FreeBSD 4.1+) 以及 TCP_DEFER_ACCEPT (Linux 2.4+) 支持;10,000 非活动的 HTTP keep-alive 连线仅需要 2.5M记忆体 。最小化的数据拷贝操作;其他HTTP功能;基于IP 和名称的虚拟主机服务;Memcached 的 GET 接口;支持 keep-alive 和管道连线;灵活简单的配置;重新配置和线上升级而无须中断客户的工作进程;可定製的访问日誌,日誌写入快取,以及快捷的日誌回卷;4xx-5xx错误代码重定向;基于 PCRE 的 rewrite 重写模组;基于客户端IP 地址和 HTTP 基本认证的访问控制;PUT,DELETE,和 MKCOL 方法;支持 FLV (Flash 视频);频宽限制 。实验特性内嵌的 perl; 通过 aio_read()/aio_write() 的套接字工作的实验模组,仅在 FreeBSD 下;对执行绪的实验化支持,FreeBSD 4.x 的实现基于 rfork();Nginx 主要的英语站点是 http://sysoev. ru/en/;英语文档草稿由 Aleksandar Lazic 完成 。HTTP基础功能处理静态档案,索引档案以及自动索引;反向代理加速(无快取),简单的负载均衡和容错;FastCGI,简单的负载均衡和容错;模组化的结构 。过滤器包括gzipping,byte ranges,chunked responses,以及 SSI-filter 。在SSI过滤器中,到同一个 proxy 或者 FastCGI 的多个子请求并发处理;SSL 和 TLS SNI 支持;IMAP/POP3代理服务功能:使用外部 HTTP 认证伺服器重定向用户到 IMAP/POP3 后端;使用外部 HTTP 认证伺服器认证用户后连线重定向到内部的 SMTP 后端;其他HTTP功能基于名称和基于IP的虚拟伺服器;Keep-alive and pipelined connections support;保持活动和支持管线连线;Flexible configuration;灵活的配置;Reconfiguration and online upgrade without interruption of the client processing;重载配置,无间断程式升级;Access log formats,bufferred log writing,and quick log rotation;访问日誌格式,bufferred日誌写,快速登录旋转;3xx-5xx error codes redirection; 3xx的- 5xx错误代码重定向;The rewrite module;重写模组;Access control based on client IP address and HTTP Basic authentication;基于客户端IP位址访问控制和HTTP基本认证;The PUT,DELETE,MKCOL,COPY and MOVE methods; 提交,删除,MKCOL,複製和移动方法;FLV streaming;FLV视频流;Speed limitation;速度限制;Limitation of simultaneous connections or requests from one address.限制同个IP位址请求数量 。Embedded perl.嵌入式的Perl 。邮件代理伺服器功能用户重定向到IMAP/POP3后端使用外部HTTP认证伺服器;User authentication using an external HTTP authentication server and connection redirection to internal SMTP backend;用户身份验证使用外部HTTP认证伺服器和连线重定向到内部的SMTP后端; Authentication methods:验证方法:POP3: USER/PASS,APOP,AUTH LOGIN/PLAIN/CRAM-MD5;的POP3:用户名/密码,的APOP,AUTH的LOGIN/PLAIN/CRAM-MD5;IMAP: LOGIN,AUTH LOGIN/PLAIN/CRAM-MD5; IMAP的:登录,AUTH的LOGIN/PLAIN/CRAM-MD5;SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;的SMTP:AUTH的LOGIN/PLAIN/CRAM-MD5;SSL support; SSL支持;STARTTLS and STLS support. STARTTLS的和补充的支持 。认证方法POP3: POP3 USER/PASS,APOP,AUTH LOGIN PLAIN CRAM-MD5;IMAP: IMAP LOGIN;SMTP: AUTH LOGIN PLAIN CRAM-MD5;SSL 支持;在 IMAP 和 POP3 模式下的 STARTTLS 和 STLS 支持 。安装模组依赖性gzip模组需要 zlib 库rewrite模组需要 pcre 库ssl 功能需要openssl库编译安装包Nginx在一些Linux发行版和BSD的各个变种版本的安装包仓库中都会有,通过各个系统自带的软体包管理方法即可安装 。需要注意的是,很多预先编译好的安装包都比较陈旧,大多数情况下还是推荐直接从源码编译 。原始码下载特定平台的安装和记录Nginx 在 Slackware 上的编译安装脚本Nginx 在ubuntu和debian上的安装及脚本,debian针对nginx包的官方下载站点使用原始码进行构建Nginx 使用 Unix 下常用的 './configure && make && make install' 过程来编译安装 。configure脚本确定系统所具有一些特性,特别是 nginx 用来处理连线的方法 。然后,它创建 Makefile 档案 。configure 支持下面的选项:--prefix=<path> - Nginx安装路径 。如果没有指定,默认为 /usr/local/nginx 。--sbin-path=<path> - Nginx执行档安装路径 。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx 。--conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径 。如果没有指定,默认为<prefix>/conf/nginx.conf 。--pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径 。如果没有指定,默认为 <prefix>/logs/nginx.pid 。--lock-path=<path> - nginx.lock档案的路径 。--error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日誌的路径 。如果没有指定,默认为 <prefix>/logs/error.log 。--http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日誌的路径 。如果没有指定,默认为 <prefix>/logs/access.log 。--user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户 。如果没有指定,默认为 nobody 。--group=<group> - 在nginx.conf中没有指定group指令的情况下,默认的nginx使用的组 。如果没有指定,默认为 nobody 。--builddir=DIR - 指定编译的目录--with-rtsig_module - 启用 rtsig模组--with-select_module --without-select_module - Whether or not to enable the select module. This module is enabled by default if a more suitable method such as kqueue,epoll,rtsig or /dev/poll is not discovered by configure.//允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+),rtsig(实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是採用轮训方法) SELECT模式将是默认安装模式--with-poll_module --without-poll_module - Whether or not to enable the poll module. This module is enabled by default if a more suitable method such as kqueue,epoll,rtsig or /dev/poll is not discovered by configure.--with-http_ssl_module - Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian,this is libssl-dev.//开启HTTP SSL模组,使NGINX可以支持HTTPS请求 。这个模组需要已经安装了OPENSSL,在DEBIAN上是libssl--with-http_realip_module - 启用 ngx_http_realip_module --with-http_addition_module - 启用 ngx_http_addition_module--with-http_sub_module - 启用 ngx_http_sub_module--with-http_dav_module - 启用 ngx_http_dav_module--with-http_flv_module - 启用 ngx_http_flv_module--with-http_stub_status_module - 启用 "server status" 页--without-http_charset_module - 禁用 ngx_http_charset_module--without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。--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. 如果启用需要 PCRE 。--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 - Set path to the http access log--http-client-body-temp-path=PATH - Set path to the http client request body temporary files--http-proxy-temp-path=PATH - Set path to the http proxy temporary files--http-fastcgi-temp-path=PATH - Set path to the http fastcgi temporary files--without-http - 禁用 HTTP server--with-mail - 启用 IMAP4/POP3/SMTP 代理模组--with-mail_ssl_module - 启用 ngx_mail_ssl_module--with-cc=PATH - 指定 C编译器的路径--with-cpp=PATH - 指定 C预处理器的路径--with-cc-opt=OPTIONS - Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD,it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors,then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048".--with-ld-opt=OPTIONS - Additional parameters passed to the linker. With the use of the system library PCRE in FreeBSD,it is necessary to indicate --with-ld-opt="-L /usr/local/lib".--with-cpu-opt=CPU - 为特定的 CPU 编译,有效的值包括:pentium,pentiumpro,pentium3,pentium4,athlon,opteron,amd64,sparc32,sparc64,ppc64 --without-pcre - 禁止 PCRE 库的使用 。同时也会禁止 HTTP rewrite 模组 。在 "location" 配置指令中的正则表达式也需要 PCRE 。--with-pcre=DIR - 指定 PCRE 库的原始码的路径 。--with-pcre-opt=OPTIONS - Set additional options for PCRE building.--with-md5=DIR - Set path to md5 library sources.--with-md5-opt=OPTIONS - Set additional options for md5 building.--with-md5-asm - Use md5 assembler sources.--with-sha1=DIR - Set path to sha1 library sources.--with-sha1-opt=OPTIONS - Set additional options for sha1 building.--with-sha1-asm - Use sha1 assembler sources.--with-zlib=DIR - Set path to zlib library sources.--with-zlib-opt=OPTIONS - Set additional options for zlib building.--with-zlib-asm=CPU - Use zlib assembler sources optimized for specified CPU,valid values are: pentium,pentiumpro--with-openssl=DIR - Set path to OpenSSL library sources--with-openssl-opt=OPTIONS - Set additional options for OpenSSL building--with-debug - 启用调试日誌--add-module=PATH - Add in a third-party module found in directory PATH在不同版本间,选项可能会有些许变化,请总是使用 ./configure --help 命令来检查一下当前的选项列表 。使用技巧对于chroot的支持是否在计画之中在什幺情况下使用Nginx比使用squid要好? 反之亦然 。大体上来说nginx主要用于反向加速代理而不是像squid那样作为常规代理服务 。Nginx的最大优势在于高负载情况下记忆体和CPU的低消耗 。我不认为squid能给你带来比nginx更好的性能 。依照 [NginxImapProxyExample] 开始你的配置. 关于不同配置参数的具体信息,请查看 [NginxMailCoreModule] 页 。示例1: 用运行于apache上的php脚本做后端验证示例2: 使用运行于同一个伺服器的 nginx-embedded-perl模组作为 imap/pop代理和认证后端某些功能不工作(URL重写,代理,路径,...)例如:如URL重写(rewrite)不工作了或者是unix的路径(/$PATH)的问题云云...请仔细阅读 [NginxDebugging] 并且 逐行 查看错误日誌 。如果你没找到错误 打起精神 试着到IRC或邮件列表里说明一下你碰到的问题 。有没有其它类似的Web服务CherokeeLighttpd (Lighty)thttpd关于各自的优缺点请使用自己喜欢的搜寻引擎查找让Nginx成为以postfix做为后端的SMTP代理Nginx使用什幺算法来实现负载均衡它能实现基于连线数的负载均衡吗?Nginx使用简单的轮巡算法,所以无法做基本连结计数的负载均衡 。这个可能会在将来的版本中有所改变 。我能关闭从代理服务到后端伺服器的快取吗或者使用上传进度特性?反向代理实践nginx + substitutions 安装nginx 自带一个Substitution模组,但该模组只能写一行,所以我们改用 substitutions下面是安装一些预备软体