软件星级:4分
nginx最新稳定版是一款服务器搭建软件,它具备多种HTTP服务器功能,能够执行反向代理和负载均衡。可根据用户的IP来执行不同的功能,正文中具体的配置方法,欢迎下载使用。
nginx是HTTP和反向代理服务器,邮件代理服务器和通用TCP / UDP代理服务器,最初由Igor Sysoev编写。长期以来,它已经在许多负载较重的俄罗斯站点上运行,包括 Yandex, Mail.Ru, VK和Rambler。
1、基本的HTTP服务器功能
提供静态和 索引 文件, 自动索引 ; 打开文件描述符缓存 ;
带有缓存的加速反向代理; 负载平衡和容错 ;
对FastCGI, uwsgi, SCGI和 memcached 服务器进行缓存的加速支持 ; 负载平衡和容错 ;
2、其他HTTP服务器功能
基于客户端IP地址, 密码(HTTP基本身份验证)和 子请求结果的访问控制 ;
限制 来自一个地址的同时连接 或 请求的数量 ;
3、邮件代理服务器功能
使用外部HTTP 身份验证 服务器 将用户重定向到 IMAP 或 POP3服务器;
使用外部HTTP 身份验证 服务器的用户身份 验证以及到内部SMTP服务器的连接重定向 ;
4、TCP / UDP代理服务器功能
基于客户地址的访问控制 ;
根据客户地址执行不同的功能 ;
5、架构和可扩展性
重新配置 和升级可执行文件,而不会中断客户端服务;
支持 kqueue(FreeBSD 4.1 +),epoll(Linux 2.6 +),/ dev / poll(Solaris 7 11/99 +),事件端口(Solaris 10),选择和轮询;
10,000个不活动的HTTP保持活动连接大约需要2.5M内存;
数据复制操作保持最少。
跨多个应用程序实例的负载平衡是一种用于优化资源利用率,最大化吞吐量,减少延迟和确保容错配置的常用技术。
可以将nginx用作非常有效的HTTP负载平衡器,以将流量分配到多个应用程序服务器,并使用nginx改善Web应用程序的性能,可伸缩性和可靠性。
1、负载均衡方法
nginx支持以下负载平衡机制(或方法):
轮询-对应用程序服务器的请求以轮询方式分发,
最少连接-将下一个请求分配给活动连接数量最少的服务器,
ip-hash —哈希函数用于确定应为下一个请求选择哪个服务器(基于客户端的IP地址)。
2、默认负载平衡配置
使用nginx进行负载平衡的最简单配置如下所示:
http {
上游myapp1 {
服务器srv1.example.com;
服务器srv2.example.com;
服务器srv3.example.com;
}
服务器{
听80;
位置 / {
proxy_pass http:// myapp1;
}
}
}
在上面的示例中,同一应用程序的3个实例在srv1-srv3上运行。如果未特别配置负载平衡方法,则默认为循环。所有请求都被 代理到服务器组myapp1,nginx应用HTTP负载平衡来分发请求。
nginx中的反向代理实现包括HTTP,HTTPS,FastCGI,uwsgi,SCGI,memcached和gRPC的负载平衡。
要为HTTPS(而非HTTP)配置负载平衡,只需使用“ https”作为协议。
为FastCGI,uwsgi,SCGI,memcached或gRPC设置负载平衡时,请分别使用 fastcgi_pass, uwsgi_pass,scgi_pass, memcached_pass和 grpc_pass 指令。
nginx有一个主进程和几个工作进程。主流程的主要目的是读取和评估配置,以及维护工作流程。工作进程对请求进行实际处理。nginx使用基于事件的模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量在配置文件中定义,可以针对给定的配置固定,也可以自动调整为可用CPU内核的数量
nginx及其模块的工作方式在配置文件中确定。默认情况下,该配置文件被命名nginx.conf ,并放入目录/usr/local/nginx/conf, /etc/nginx或 /usr/local/etc/nginx。
1、启动,停止和重新加载配置
要启动nginx,请运行可执行文件。一旦启动nginx,就可以通过使用-s参数调用可执行文件来对其进行控制。使用以下语法:
nginx -s 信号
其中信号可能是以下之一:
stop —快速关机
quit —正常关机
reload —重新加载配置文件
reopen —重新打开日志文件
例如,要在等待工作进程完成对当前请求的服务的过程中停止nginx进程,可以执行以下命令:
Nginx -s退出
此命令应在启动nginx的同一用户下执行。
2、配置文件的结构
nginx由受配置文件中指定的指令控制的模块组成。伪指令分为简单伪指令和块伪指令。一个简单的指令由名称和参数组成,这些名称和参数之间用空格分隔,并以分号(;)结尾。块指令的结构与简单指令的结构相同,但是它以分号(而不是分号)结尾,并带有一组用括号({和})括起来的附加指令。如果块指令在花括号内可以有其他指令,则称为上下文
放置在任何上下文外部的配置文件中的指令都被视为在 主上下文中。在events和http指令驻留在main上下文server中http,并location在 server。
#符号 后的其余行被视为注释。
3、设置FastCGI代理
nginx可用于将请求路由到FastCGI服务器,该服务器运行使用各种框架和编程语言(例如PHP)构建的应用程序。
与FastCGI服务器一起使用的最基本的nginx配置包括使用 fastcgi_pass 指令而不是proxy_pass指令,以及fastcgi_param 指令来设置传递给FastCGI服务器的参数。假设可通过访问FastCGI服务器localhost:9000。以上一节中的代理配置为基础,用proxy_pass指令 替换fastcgi_pass指令并将参数更改为 localhost:9000。在PHP中,该SCRIPT_FILENAME参数用于确定脚本名称,该QUERY_STRING 参数用于传递请求参数。结果配置为:
服务器{
位置 / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
fastcgi_param QUERY_STRING $ query_string;
}
位置〜\。(gif | jpg | png)$ {
根/ data / images;
}
}
这将设置一个服务器,该服务器将把对静态图像的请求以外的所有请求路由到localhost:9000通过FastCGI协议运行的代理服务器 。