快捷搜索:

nginx 服务器简介

Nginx ("engine x") 是一个高机能的 HTTP 和 反向代理 办事器,也是一个 IMAP/POP3/SMTP 办事器。 Nginx 是由 Igor Sysoev 为俄罗斯造访量第二的 Rambler.ru 站点开拓的,第一个公开版本0.1.0宣布于2004年10月4日。其将源代码以类BSD许可证的形式宣布,因它的稳定性、富厚的功能集、示例设置设置设备摆设摆设文件和低系统资本的耗损而驰誉。2011年6月1日,nginx 1.0.4宣布78。

Nginx是一款轻量级的Web 办事器/反向代理办事器及电子邮件(IMAP/POP3)代理办事器,并在一个BSD-like 协议下发行。由俄罗斯的法度榜样设计师Igor Sysoev所开拓,供俄国大年夜型的进口网站及搜索引擎Rambler(俄文:Рамблер)应用。其特征是占领内存少,并发能力强,事实上nginx的并发能力确凿在同类型的网页办事器中体现较好,中国大年夜陆应用nginx网站用户有:百度、新浪、网易、腾讯等。

优点

Nginx 可以在大年夜多半 Unix like OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日宣布,一样平常环境下,对付新建站点,建议应用最新稳定版作为临盆版本,已有站点的进级急切性不高。Nginx 的源代码应用 2-clause BSD-like license。

Nginx 是一个很强大年夜的高机能Web和反向代理办事器,它具有很多异常良好的特点:

在高连接并发的环境下,Nginx是Apache办事器不错的替代品:Nginx在美国是做虚拟主机买卖的老板们常常选择的软件平台之一。能够支持高达 50,000 个并发连接数的相应,谢谢Nginx为我们选择了 epoll and kqueue作为开拓模型。

办事器

Nginx作为负载均衡办事器:Nginx 既可以在内部直接支持 Rails 和 PHP 法度榜样对外进行办事,也可以支持作为 HTTP代理办事器对外进行办事。Nginx采纳C进行编写,不论是系统资本开销照样CPU应用效率都比 Perlbal 要好很多。

代码

Nginx代码完全用C说话从头写成,已经移植到许多体系布局和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只应用系统C库函数。而且,假如不必要或者斟酌到潜在的授权冲突,可以不应用这些第三方库。

代理办事器

作为邮件代理办事器:Nginx 同时也是一个异常优秀的邮件代理办事器(最早开拓这个产品的目的之一也是作为邮件代理办事器),Last.fm 描述了成功并且美妙的应用履历。

Nginx 是一个安装异常的简单、设置设置设备摆设摆设文件异常简洁(还能够支持perl语法)、Bugs异常少的办事器。Nginx 启动分外轻易,并且险些可以做到7*24不间断运行,纵然运行数个月也不必要从新启动。你还能够不间断办事的环境下进行软件版本的进级。

功能

支持操作系统

FreeBSD 3.x,4.x,5.x,6.x i386; FreeBSD 5.x,6.x amd64;

Linux 2.2,2.4,2.6 i386; Linux 2.6 amd64;

Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;

MacOS X (10.4) PPC;

Windows XP,Windows Server 2003和Windows 7等。

布局与扩展

一个主进程和多个事情进程。事情进程是单线程的,且不必要特殊授权即可运行;

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=

- Nginx安装路径。假如没有指定,默觉得 /usr/local/nginx。

--sbin-path=

- Nginx可履行文件安装路径。只能安装时指定,假如没有指定,默觉得

/sbin/nginx。

--conf-path=

- 在没有给定-c选项下默认的nginx.conf的路径。假如没有指定,默觉得

/conf/nginx.conf。

--pid-path=

- 在nginx.conf中没有指定pid指令的环境下,默认的nginx.pid的路径。假如没有指定,默觉得

/logs/nginx.pid。

--lock-path=

- nginx.lock文件的路径。

--error-log-path=

- 在nginx.conf中没有指定error_log指令的环境下,默认的差错日志的路径。假如没有指定,默觉得

/logs/error.log。

--http-log-path=

- 在nginx.conf中没有指定access_log指令的环境下,默认的造访日志的路径。假如没有指定,默觉得

/logs/access.log。

--user= - 在nginx.conf中没有指定user指令的环境下,默认的nginx应用的用户。假如没有指定,默觉得 nobody。

--group= - 在nginx.conf中没有指定user指令的环境下,默认的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

CLS

ECHO.

ECHO. * * * * Nginx 治理法度榜样 Power By ChenJianxiang * * *

ECHO. * *

ECHO. * 1 启动Nginx *

ECHO. * *

ECHO. * 2 关闭Nginx *

ECHO. * *

ECHO. * 3 重启Nginx *

ECHO. * *

ECHO. * 4 退 出 *

ECHO. * *

ECHO. * * * * * * * * * * * * * * * * * * * * * * * *

ECHO.

ECHO.请输入选择项目的序号:

set /p ID=

IF "%id%"=="1" GOTO cmd1

IF "%id%"=="2" GOTO cmd2

IF "%id%"=="3" GOTO cmd3

IF "%id%"=="4" EXIT

PAUSE

:cmd1

ECHO.

ECHO.启动Nginx......

IF NOT EXIST %NGINX_DIR%nginx.exe ECHO %NGINX_DIR%nginx.exe不存在

%NGINX_PATH%

cd %NGINX_DIR%

IF EXIST %NGINX_DIR%nginx.exe start %NGINX_DIR%nginx.exe

ECHO.OK

PAUSE

GOTO MENU

:cmd2

ECHO.

ECHO.关闭Nginx......

taskkill /F /IM nginx.exe > nul

ECHO.OK

PAUSE

GOTO MENU

:cmd3

ECHO.

ECHO.关闭Nginx......

taskkill /F /IM nginx.exe > nul

ECHO.OK

GOTO cmd1

GOTO MENU

版本宣布

2012年08月22日,Nginx 1.3.5 开拓版宣布。

2012年09月12日,Nginx 1.3.6 开拓版宣布。

2012年12月11日,Nginx 1.2.6 稳定版宣布

2013年02月12日,Nginx 1.2.7 稳定版宣布

2013年02月19日,Nginx 1.3.13 开拓版宣布

2013年04月03日,Nginx 1.2.8 稳定版宣布。

2013年04月16日,Nginx 1.3.16 开拓者版本宣布。

2013年04月24日,Nginx 1.4.0 稳定版宣布。

2013年05月07日,Nginx 1.4.1 稳定版宣布。

2013年05月07日,Nginx 1.5.0 开拓版本宣布。

2013年06月04日,Nginx 1.5.1 主版本宣布。

2013年07月02日,Nginx 1.5.2 开拓版宣布。

2013年07月17日,Nginx 1.4.2 稳定版宣布。

2013年07月30日,Nginx 1.5.3 开拓版本宣布。

2013年08月27日,Nginx 1.5.4 开拓版本宣布。

2013年09月17日,Nginx 1.5.5 开拓版本宣布。[1-2]

2015年10月27日,Nginx 1.9.6 主线版本宣布。

--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.

yum -y --noplugins install make

yum -y --noplugins install pcre-devel

yum -y --noplugins install openssl-devel

编译软件

tar zxf nginx-1.0.8.tar.gz

cd nginx-1.0.8.tar.gz

./configure ./configure --add-module=path/substitutions4nginx-read-only //留意这里的path是相对应的真实路径

make

make install

设置设置设备摆设摆设 nginx.conf

此时,nginx应该安装在于 /usr/local/nginx 下面

server_name servername;

location / {

subs_filter ca-pub-奸淫奸淫奸淫* ca-pub-奸淫奸淫奸淫*; //把google ad 的用户号 ca-pub-9805743306566114 改成你自己的,比如 ca-pub-奸淫奸淫奸淫*

subs_filter 奸淫奸淫奸淫* 奸淫奸淫奸淫*; //把google ad 的广告号 奸淫奸淫奸淫*改成你自己的,比如 奸淫奸淫奸淫*,你懂的!:D

proxy_pass 这里是填写必要代理的网址; //反向代理站。

index index.html index.htm;

}

记着subs_filter 敕令的款式即可随意发挥想象力调换你想调换的广告、超链接,等等。

基于太多人扣问下面的问题:

我能为了获得上传进度而关闭代理的缓存吗

应用nginx我怎么才能给用户显示上传进度

到今朝为止 (2007-Apr-26) 还没有法子关闭到后端办事器的缓存.

Nginx Rewrite

1.Nginx Rewrite 基础标记(flags)复制内容到剪贴板代码:last – 基础上都用这个Flag[1]。

break – 中止Rewirte,不在继承匹配

redirect – 返回临时重定向的HTTP状态302

permanent – 返回永远重定向的HTTP状态301

2. 正则表达式匹配,此中:代码:

CODE:

* ~ 为区分大年夜小写匹配

* ~* 为不区分大年夜小写匹配

* !~和!~*分手为区分大年夜小写不匹配及不区分大年夜小写不匹配

3. 文件及目录匹配,此中:代码:

CODE:

* -f和!-f用来判断是否存在文件

* -d和!-d用来判断是否存在目录

* -e和!-e用来判断是否存在文件或目录

* -x和!-x用来判断文件是否可履行

4.Nginx 的一些可用的全局变量,可用做前提判断:

代码:

CODE:

$args

$content_length

$content_type

$document_root

$document_uri

$host

$http_user_agent

$http_cookie

$limit_rate

$request_body_file

$request_method

$remote_addr

$remote_port

$remote_user

$request_filename

$request_uri

$query_string

$scheme

$server_protocol

$server_addr

$server_name

$server_port

$uri

设置设置设备摆设摆设

cls

@ECHO OFF

SET NGINX_PATH=D:

SET NGINX_DIR=D:\nginx-1.3.6\

color 0a

TITLE Nginx 治理法度榜样 Power By ChenJianxiang

GOTO MENU

:MENU

--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办事器

Cherokee

Lighttpd (Lighty)

thttpd

关于各自的优毛病请应用自己爱好的搜索引擎查找

让Nginx成为以postfix做为后真个SMTP代理

Nginx应用什么算法来实现负载均衡它能实现基于连接数的负载均衡吗?

Nginx应用简单的轮巡算法,以是无法做基础链接计数的负载均衡。这个可能会在将来的版本中有所改变。

我能关闭从代理办事器到后端办事器的缓存吗或者应用上传进度特点?

反向代理实践

. nginx + substitutions 安装

nginx 自带一个Substitution模块,但该模块只能写一行,以是我们改用 substitutions

下面是安装一些预备软件

yum -y --noplugins install wget zip

yum -y --noplugins install unzip

yum -y --noplugins install gcc

您可能还会对下面的文章感兴趣: