nginx介绍(引用百度百科)
Nginx (engine x) 是一个高性能的http和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一个http服务器。是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
nginx功能
1.反向代理
正向代理:某些情况下,代理我们用户去访问服务器,需要用户手动的设置代理服务器的ip和端口号。
反向代理:是用来代理服务器的,代理我们要访问的目标服务器。
代理服务器接受请求,然后将请求转发给内部网络的服务器(集群化),
并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器。
Nginx在反向代理上,提供灵活的功能,可以根据不同的正则采用不同的转发策略,设置好后不同的请求就可以走不同的服务器。
2.负载均衡
负载均衡:多在高并发情况下需要使用。其原理就是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。
3.动静分离
Nginx提供的动静分离是指把动态请求和静态请求分离开,合适的服务器处理相应的请求,使整个服务器系统的性能、效率更高。
Nginx可以根据配置对不同的请求做不同转发,这是动态分离的基础。静态请求对应的静态资源可以直接放在Nginx上做缓冲,更好的做法是放在相应的缓冲服务器上。动态请求由相应的后端服务器处理。
nginx实现
1.两台或以上的应用服务器在nginx.conf中写入相关配置,主要是对proxy_pass,upstream的使用
2.Nginx可使用的负载均衡策略有:轮询(默认)、权重、ip_hash、url_hash(第三方)、fair(第三方)
Nginx的配置文件通常位于 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
文件中,其主要包含以下几个部分:
-
events
部分:在这个部分,你可以指定 Nginx 如何处理连接,例如并发连接的最大数目和使用哪种事件驱动的模型。 -
http
部分:这是配置 HTTP 服务器的主要部分。它包含了全局的配置指令、HTTP 请求处理配置、反向代理、负载均衡、缓存控制、访问日志等。 -
server
部分:在http
部分内,你可以定义一个或多个server
块,每个server
块代表一个虚拟主机(或域名)。在每个server
块内,你可以定义该虚拟主机的配置,如监听端口、SSL/TLS 配置、请求的路由规则等。 -
location
部分:在server
块内,你可以使用location
块来匹配特定的 URL 或路径,并指定相关的配置指令,如反向代理到其他服务器、启用缓存、设置访问权限等。
以下是一个简单的 Nginx 配置示例:
events {
worker_connections 1024;
}
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
}
在上述示例中,我们定义了一个名为 backend
的 upstream
块,其中列出了两个后端服务器 backend1.example.com
和 backend2.example.com
。当 Nginx 收到来自客户端的请求时,它将根据负载均衡算法将请求转发到这些后端服务器之一。
在 server
块的 location
配置中,我们使用 proxy_pass
指令将请求代理到 backend
上定义的后端服务器组。此外,我们还使用 proxy_set_header
指令设置了请求头的 Host
字段,以便后端服务器能够正确处理请求。
通过这样的配置,Nginx 可以充当一个反向代理服务器,将客户端的请求转发到后端服务器,并将响应返回给客户端。
需要注意的是,upstream
块还支持更高级的负载均衡配置,例如权重、健康检查、失败处理等选项。你可以根据具体需求和后端服务器的情况进行相应的配置。此外,Nginx 还支持其他一些反向代理相关的配置指令,如缓存、SSL/TLS 设置、请求限制等。