nginx 官方下载地址html
http://nginx.org/en/download.htmlnginx
通常.net项目要运行在IIS环境下,天然选择windows版下载算法
我这里下载了nginx/Windows-1.14.0并解压包,conf目录下找到nginx.conf文件,使用记事本方式打开。windows
里面主要分为几大块,全局块、events块、http块、server块和location块。后端
下面是设置好的配置文件。缓存
#########-全局块-######### #user administrator administrators; #配置用户或者组 worker_processes 1; #容许生成的进程数,默认为1 #pid logs/nginx.pid; #指定nginx进程运行文件存放地址 error_log logs/error.log error; #制定日志路径,级别:debug|info|notice|warn|error|crit|alert|emerg ########-events块-######## events { accept_mutex on; #设置网路链接序列化,防止惊群现象发生,默认为on multi_accept on; #设置一个进程是否同时接受多个网络链接,默认为off #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #最大链接数 } #########-http块-######### http { include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型,默认为text/plain #access_log off; #取消服务日志 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #自定义格式 access_log logs/access.log main; sendfile on; #容许sendfile方式传输文件 #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #链接超时时间 #gzip on; upstream mysvr.com { server 127.0.0.1:8080 weight=8; server 127.0.0.1:8081 weight=9; } server { listen 80; #监听端口 server_name 127.0.0.1; #监听地址 #charset koi8-r; #access_log logs/host.access.log main; location / { #root html; #根目录 #index index.html index.htm; #设置默认页 random_index on; #随机访问服务器 #设置主机头和客户端真实地址,以便服务器获取客户端真实IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 60; client_max_body_size 50m; client_body_buffer_size 256k; proxy_pass http://mysvr.com; #请求转向mysvr 定义的服务器列表 } #error_page 404 /404.html; #错误页 # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} } }
#号表明注释,这里主要说明下server块和location块。服务器
server块中 listen 80 顾名思义这是nginx启动后监听的端口,server_name就是监听IP地址,部署的时候要填写外网IP就能够了。
location块中 root是访问根目录,index是默认页,咱们这里使用proxy_pass反向代理转发其余服务器地址就先注释掉了。
接下来讲下,proxy_pass 配置
proxy_pass http://mysvr.com; mysvr.com是自定义的名字,经过上面定义的upstream块映射获取server地址访问。
upstream mysvr.com {
server 192.168.1.10:8080; server 192.168.1.10:8081; }
默认方式:依照轮询,方式进行负载,每个请求按时间顺序逐一分配到不一样的后端服务器。假设后端服务器down掉。能本身主动剔除。尽管这样的方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。
upstream mysvr.com {
server 192.168.1.10:8080 weight=8; server 192.168.1.10:8081 weight=9; }
weight概率方式:指定轮询概率,weight和访问比率成正比,用于后端服务器性能不均的状况,若是后端服务器down掉,能自动剔除。
upstream mysvr.com {
ip_hash; server 192.168.1.10 weight=8; server 192.168.2.10 weight=9; }
ip_hash:每一个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在必定程度上解决了集群部署环境下session共享的问题。
upstream mysvr.com{
server 192.168.1.10;
server 192.168.2.10;
fair;
}
fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略相似。
upstream mysvr.com{
server 192.168.1.10:8080;
server 192.168.1.10:8081;
hash $request_uri;
hash_method crc32;
}
url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后端服务器为缓存时比較有效。
注意:在upstream中加入hash语句。server语句中不能写入weight等其余的參数,hash_method是使用的hash算法。upstream还可以为每个设备设置状态值,这些状态值的含义分别例如如下:down 表示单前的server临时不參与负载.weight 默以为1.weight越大,负载的权重就越大。max_fails :赞成请求失败的次数默以为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.fail_timeout : max_fails次失败后。暂停的时间。backup: 其余所有的非backup机器down或者忙的时候,请求backup机器。因此这台机器压力会最轻。upstream bakend{ #定义负载均衡设备的Ip及设备状态 ip_hash; server 10.0.0.11:9090 down; server 10.0.0.11:8080 weight=2; server 10.0.0.11:6060; server 10.0.0.11:7070 backup; }都配置好后,就能够启动nginx了,双击nginx.exe运行也能够。或者打开cmd窗口,进入nginx目录下运行start nginx 启动。运行nginx.exe -s reload 重启。nginx.exe -s stop 中止服务。