高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。
Nginx 超越 Apache 的高性能和稳定性。
稳定性、功能集丰富、 冷源配置文件和系统资源低能耗
在高连接并发的情况下,Nginx是Apache服务器不错的替代品
10000 个非活动的 HTTP keep-alive 连接仅需要 2.5M 内存。
据说,能够支持高达 50,000 个并发连接数的响应(当然,受硬件配置影响)
HTTP功能
处理静态文件,索引文件以及自动索引; (lighttpd is all right)
反向代理加速,负载均衡和容错,FastCGI;
支持SSI-filter,SSL等;
基于IP 和名称的虚拟主机服务;
基于IP 和名称的虚拟主机服务;
支持 keep-alive 和管道连接;
重新配置和在线升级而无须中断客户的工作进程;
定制的访问日志,日志写入缓存,以及快捷的日志回卷;(HTTP高负载下日志也许是个瓶颈)
4xx-5xx 错误代码重定向;(默认或自定义)
基于 PCRE 的 rewrite 重写模块;(需要安装pcre支持正则,可见其精简程度)
基于客户端 IP 地址和 HTTP 基本认证的访问控制;
支持 FLV (Flash 视频);
支持带宽限制;
后又详细配置方法
邮件PROXY功能(Last.fm)
使用外部 HTTP 认证服务器重定向用户到 IMAP/POP3 后端;
使用外部 HTTP 认证服务器认证用户后连接重定向到内部的 SMTP 后端;
SUPPORT SYSTEM
FreeBSD,Windows,Linux,MacOS X, Solaris
INSTALL
当前稳定版: Nginx 0.7.61,并只研究其安装及详细的配置,不做源码及模块开发的分析,若有兴趣可到
http://emiller.info/nginx-modules-guide.html 阅读模块开发文档E文
主要编译选项摘录configure
--prefix=<path> - Nginx安装路径。如果没有指定,默认为 /usr/local/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中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。
--with-http_ssl_module -开启HTTP SSL模块,使NGINX可以支持HTTPS请求。需要安装了OPENSSL
--with-http_flv_module
--with-http_stub_status_module - 启用 "server status" 页(可有可无)
--without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。
--without-http_ssi_module - 禁用 ngx_http_ssi_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_browser_module - 禁用 ngx_http_browser_module
--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-openssl=DIR - Set path to OpenSSL library sources
安装过程
先安装gcc openssl-devel pcre-devel zlib-devel
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
mkdir -p /data/www
mkdir -p /data/logs
chown -R www.www /data/www
chown -R www.www /data/logs
规范编译选项:
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx.conf --with-http_ssl_module
make && make install
配置文件(类perl或php语法)
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) {
set $id $1;
}
if ($request_method = POST ) {
return 405;
}
if (!-f $request_filename) {
break;
proxy_pass http://127.0.0.1;
}
if ($slow) {
: limit_rate 10k;
}
if ($invalid_referer) {
: return 403;
}
---------------------------------------------------
user www www;
worker_processes 8; 一般情况下开4个或8个, 再往上开的话优化不太大,开启太多,会影响主进程调度,占用cpu会增高
error_log /data/logs/error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_cpu_affinity 0001 0100 1000 0010 0001 0100 1000 0010;
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。