nginx [engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP / UDP代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在许多负载很重的俄罗斯网站上运行,包括 Yandex, Mail.Ru, VK和 Rambler。据Netcraft称,nginx 在2019年6月服务或代理了 26.34%最繁忙的网站.html
基本的HTTP服务器功能、其余HTTP服务器功能、邮件代理服务器功能nginx
下载地址web
我这里下载的是Windows版本.正则表达式
解压打开以下:后端
在Nginx目录的搜索栏,敲入cmd数组
输入命令start nginx便可启动Nginx浏览器
在浏览器访问 localhost:缓存
其余的一些经常使用命令:服务器
nginx -s stop 快速关闭
nginx -s quit 优雅关闭
nginx -s reload 从新加载配置文件
nginx -s reopen 从新打开日志文件架构
nginx的配置文件在/conf/nginx.conf,nginx由模块组成,这些模块由配置文件中指定的指令控制。指令分为简单指令和块指令
一个简单的指令由名称和参数组成,用空格分隔,以分号(;)结尾。
块指令与简单指令具备相同的结构,但它不是以分号结尾,而是以大括号{}包围的一组附加指令结束。若是块指令在大括号内能够有其余指令,则称为上下文(示例: events, http, server和 location)。
"#" 表示注解
在/conf/ 目录下,将原来的nginx.conf文件更名为nginx.conf1,而且建立一个空白的nginx.conf文件
修改nginx.conf文件
##工做线程, 建议和cpu数量相同 worker_processes 4; #工做模式与链接数上限 events { #单个进程最大链接数(最大链接数=链接数*进程数) worker_connections 1024; } #设定http服务器 http { #虚拟主机的配置 server { #对 "/" 启用反向代理 location / { # 制定静态资源的位置 root D://web_resources//static//; } location /images/ { root D://web_resources//static//; } } }
本地图片的路径 : D:\web_resources\static\images\1.png
本地页面的路径: D:\web_resources\static\index.html
也就是所 root的路径+ location后面的路径 = 实际文件存放的文件夹路径
访问测试:
成功了有没有.
nginx的一个常见用途是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从中检索响应,而后将它们发送给客户端。
接下来作一个简单的动静分离的例子, 静态资源访问指向本地目录,动态资源代理本地的一个8080端口的web服务.
修改nginx.conf文件
http { server { location / { # 代理的地址 proxy_pass http://localhost:8080; } # 该参数是一个正则表达式匹配以gif,.jpg或.png结尾的URL #相应的请求将映射到该D://web_resources//static//; 目录。 location ~ \.(gif|jpg|png|html)$ { root D://web_resources//static//; } } }
访问8080端口的服务:
确实被转发过去了.
访问静态资源:
除了动静分离,Nginx的负载均衡也是经常使用的一个功能.
nginx支持如下负载平衡机制(或方法):
若是未特别配置负载平衡方法,则默认为循环。
修改nginx.conf文件
http { #负载均衡 upstream myapp1 { server localhost:8080; server localhost:8081; server localhost:8082; } server { # nginx监听的端口 listen 80; location / { proxy_pass http://myapp1; } } }
屡次请求页面,请求均匀的负载在每一个服务上:
输出语句的数量相同.
另外一个负载平衡规则是最少链接的。在某些请求须要更长时间才能完成的状况下,最小链接容许更公平地控制应用程序实例上的负载。
使用最少链接的负载平衡,nginx将尝试不会使繁忙的应用程序服务器超载请求过多,而是将新请求分发给不太繁忙的服务器。
当 least_conn指令用做服务器组配置的一部分时,将激活nginx中的最小链接负载平衡
#负载均衡 upstream myapp1 { # 最少链接负载均衡指令 least_conn; server localhost:8080; server localhost:8081; server localhost:8082; }
请注意,经过循环或最少链接的负载平衡,每一个后续客户端的请求可能会分发到不一样的服务器。没法保证同一客户端始终指向同一服务器。
若是须要将客户端绑定到特定的应用程序服务器 - 换句话说,就始终尝试选择特定服务器而言,使客户端的会话“粘滞”或“持久” - ip-hash负载平衡机制能够是用过的。
使用ip-hash,客户端的IP地址将用做散列密钥,以肯定应为客户端的请求选择服务器组中的哪一个服务器。此方法可确保来自同一客户端的请求始终定向到同一服务器,但此服务器不可用时除外。
配置方式和上面相似, 添加指令ip_hash:
#负载均衡 upstream myapp1 { # 最少链接负载均衡指令 ip_hash; server localhost:8080; server localhost:8081; server localhost:8082; }
在上面的示例中,未配置服务器权重,这意味着全部指定的服务器都被视为对特定负载平衡方法具备同等资格。
当 为服务器指定权重参数时, 权重被计入负载平衡决策的一部分。
修改配置文件:
upstream myapp1 { #upstream的负载均衡,weight是权重,能够根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的概率越大。 server localhost:8080 weight = 3; server localhost:8081; server localhost:8082; }
使用此配置,每5个新请求将分布在应用程序实例中,以下所示:3个请求将定向到8080端口,一个请求将转到8081端口,另外一个请求转到8082端口。
两个参数max_fails和fail_timeout,用于判断后端节点状态.
在fail_timeout的时间范围内链接服务器通讯失败的次数若是超过max_fail,那么服务器被断定为不可用.而且再次等待一个fail_timeout的时间,再去从新尝试请求.
fail_timeout的默认值为30s,,max_fails的默认值为1.
配置方式:
#负载均衡 upstream myapp1 { server localhost:8080 weight=3 max_fails=10 fail_timeout=30; server localhost:8081; server localhost:8082; }