这是一偏初学者入门的内容,发现有问题的地方,欢迎留言,一起学习,一起进步

本文主要记录一下在Windows平台中,IIS站点如何使用Nginx 做一个简单的负载均衡 

一、 准备工作

  官网下载安装包:https://nginx.org/en/download.html

这里框选的Windows平台下适用的版本,分别是在线版本、稳定版、和历史版本,可以根据自己的需求选择,如果你不知道选啥,那就选个稳定版吧

下载之后的文件加压出来长这样:

这里边的文件看名字就可以发现他们的用户,比如:conf里边是nginx的配置文件,html放一些通用的静态页面,logs就是日志里,这些在后边我们都大概会用到

二、 启动nginx的方式

可以两种方式直接运行 niginx ,也可以使用命令,做测试的话 建议使用命令,别问为啥,问了就是因为操作方便

方式一:双击nginx.exe

方式二:进入cmd 到该目录下,运行 start nginx

启动后如果闪退,进程中也找不到nginx的进程,说明启动失败了,去logs中查看一下错误日志,一般最常见的错误有2个

1、 Nginx监听端口已经在本机上被使用,默认80端口,这种情况下我们换一个端口就行了

打开conf文件夹中的nginx.conf文件,记事本打开,修改其中的监听端口,如图监听8010端口:

2、 Nginx所在的目录有中文或者特殊字符了,比如这样的提示:

// :: [emerg] #: CreateFile() "E:\软件安装包\分布式\nginx-1.18.0\nginx-1.18.0/conf/nginx.conf" 
failed (: No mapping for the Unicode character exists in the target multi-byte code page)

解决方法很简单,别放中文目录,避免目录中的特殊字符就好了,比如我把nginx-1.18.0文件夹直接拷贝到我的D盘

最后再次启动nigix ,如果启动成功,可以在进程管理器中看到nginx的进程,并且在logs文件夹中会生成一个nginx.pid的文件,这个文件存放的其实就是nginx主进程的进程ID

启动成功之后 ,浏览器中访问http://127.0.0.1:8010/ ,看到Welcome 就说明启动已经可以了

三、简单配置负载均衡

  预期配置目标:使用nginx配置,实现对两个IIS站点的均衡访问。

       预期测试现象:如果通过8010端口可以均衡的看到8011和8012两个端口对应的IIS站点中的内容, 说明配置成功

  测试站点准备操作:

  1、创建一个Web站点,我这边是这样做的:

在视图中 我写了Stie1,生成这个项目。

2、将这个项目直接复制一个,并将视图中的Site1改为Site2,这样我就有两个路由资源完全相同的站点了文件了。

3、 在IIS中配置两个站点Site1和Site2,端口号 我分别设置为:8011、8012,文件地址分别是2步骤中的两个文件夹

4、分别通过127.0.0.1:8011和127.0.0.1:8012 先检测确认这两个站点没有问题,并且可以通过界面内容看出来 是两个站点

测试站点准备好了,接下来开始修改nginx的配置文件了

5、打开conf下的nginx.conf,找一下有没有upstream 配置,没有的话就按照下边的代码 复制粘贴一个改改,粘贴在server节点上边就行了,注意别放server里边了

  upstream my_web{
server 127.0.0.1: weight=;
server 127.0.0.1: weight=;
}

这里边的my_web是我自己起的名字,起个有意义的名字,后边要用

这里边的 每一个server 都指定一个映射的地址,weight值你可以理解为,在轮询分配资源的时候分配的数量,如代码配置中的1和2,意思是 8011分配一个访问之后,8012开始分,8012分2个之后再继续给8011分,这个地方其实就是分配的权重值的,分配比例是自身权重n除以总权重值值和T ,也就是 n/T

6、修改conf下的nginx.conf中的server

图中的第一个空色框,前边有提到 是监听的端口;

server_name 就是上一个步骤中我们配置的 upstream 的名字my_web;

在server中的location / 中添加proxy_pass ,上边有整体截图,这里是location参考代码,

    location / {
root html;
index index.html index.htm;
proxy_pass http://my_web;#my_web很眼熟对不对?没错 就是你自己定义的名字
     }

7、OK 到这里 你就可以做简单的测试了

重启一下nginx就可以了,结束进程重启  或者 cmd中使用命令:nginx -s reload

重启完成之后在浏览器中访问:127.0.0.1:8010站点,集合加上你的路由哦。然后重复刷新查看效果:

看到内容了吗?和预期测试结果吻合,简单的配置完成了!!是不是很简单  好了去装13吧,

四、其他常用的配置

其实就是重点说一下upstream的配置了,先来一段有注释的配置

#########-全局块-#########

#user administrator administrators;  #配置用户或者组
worker_processes ; #允许生成的进程数,默认为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 ; #最大连接数
} #########-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 ;
keepalive_timeout ; #连接超时时间 #gzip on; upstream mysvr.com {
server 127.0.0.1: weight=;
server 127.0.0.1: weight=;
} server {
listen ; #监听端口
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 ;
proxy_send_timeout ;
proxy_read_timeout ;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_pass http://mysvr.com; #请求转向mysvr 定义的服务器列表
} #error_page /.html; #错误页 # redirect server error pages to the static page /50x.html
#
#error_page /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 停止服务

最后自一段参考:https://www.cnblogs.com/han1982/p/9590342.html,如果你有一定经验,直接看最后一段 就能配置了

asp.net中 使用Nginx 配置 IIS站点负载均衡的更多相关文章

  1. 【Nginx(三)】Nginx配置集群 负载均衡策略

    Nginx配置集群 负载均衡策略 一.安装环境 1.安装JDK8的环境,配置JDK8的环境变量 2.上传jar包demo-1.jar 和 demo-2.jar demo-1.jar 监听8080端口; ...

  2. Nginx配置upstream实现负载均衡及keepalived实现nginx高可用

    (原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟 ...

  3. nginx 和 IIS 实现负载均衡

    Nginx的作用和优点,这里不必多说,今天主要是nginx负载均衡实验,把做的步骤记录下来,作为一个学习笔记吧,也可以给大家做下参考. 1.Nginx安装 1.下载地址:http://nginx.or ...

  4. Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  5. 配置IIS的负载均衡

    在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面: 1.IIS 负载均衡. 2.数据库 负载均衡. 3.系统 ...

  6. 【upstream】Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  7. Linux系统中使用Nignx配置反向代理负载均衡

    目录 使用nginx实现动静分离的负载均衡集群 使用nginx实现负载均衡和动静分离 使用nginx实现动静分离的负载均衡集群 Nginx官网源码包下载链接:http://nginx.org/en/d ...

  8. Nginx配置upstream实现负载均衡1

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  9. nginx ----> nginx配置/反向代理/负载均衡

    nginx [engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写. 环境: Ubuntu16.04 安装ngin ...

随机推荐

  1. 我搭的神经网络不work该怎么办!看看这11条新手最容易犯的错误

    1. 忘了数据规范化 2. 没有检查结果 3. 忘了数据预处理 4. 忘了正则化 5. 设置了过大的批次大小 6. 使用了不适当的学习率 7. 在最后一层使用了错误的激活函数 8. 网络含有不良梯度 ...

  2. golang的fmt

    前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 注意!!!!!!!!!! 单词都是连着的,我是为了看着方便.理解方便才分开的 1.fmt 中文文档 [英文文档 ...

  3. 运放引脚悬空危害大,单片机PWM信号进入运放需要考虑避免运放引脚悬空

    1 问题电路 在没有烧录程序时,单片机的PWM引脚无信号,导致运放的3脚悬空,从而导致运放输出3.5V电压,从二导致后面驱动电流非常大,容易对驱动器件造成损坏 2 改进电路 通过在单片机输出增加下拉电 ...

  4. Ubuntu 18.04 安装配置 go 语言

    Ubuntu 18.04 安装配置 go 语言 1.下载 下载 jdk 到 Downloands 文件夹下 cd 进入 /usr/local, 创建 go 文件夹, 然后 cd 进这个文件夹 cd / ...

  5. GAN量化评估方法——IS(Inception Score)和FID(Frechet Inception Distance score)

    生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏.下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(F ...

  6. pytest封神之路第一步 tep介绍

    『 tep is a testing tool to help you write pytest more easily. Try Easy Pytest! 』 tep前身 tep的前身是接口自动化测 ...

  7. 微众银行FATE联邦学习框架

    参考:https://github.com/webankfintech/fate https://www.fedai.org/#/ 一.Docker Standalone 安装 FATE $ sh b ...

  8. pandas 数据库数据的读取

    绝大多数公司都会选择将数据存入数据库中,因为数据库既可以存放海量数据,又可以非常便捷地实现数据的查询.下面以MySQL和SQL Server为例,来练习Pandas模块和 对应的数据库模块. 首先需要 ...

  9. .net core国际化

    1.背景 公司业务遍及全球各地,对应业务系统国际化就是顺理成章的事情.最近就接手了一批新老系统的国际化任务,这里把一些探索经验.案例记录下来.本身改造和探索过程包括.NET MVC的,以及.NET C ...

  10. Vue.use() 不一样的发现

    1.Vue.use()首先是可以接受一个函数 var a = function () { console.log(a)}Vue.use(a) // 没有问题会输出a 2.当这个a上面有install属 ...