写点什么

Nginx+IIS 做站点访问负载均衡

作者:为自己带盐
  • 2021 年 12 月 28 日
  • 本文字数:1794 字

    阅读完需:约 6 分钟

Nginx+IIS做站点访问负载均衡

前言

Nginx 做反向代理和服务器是啥也没啥关系~~,这里就是单纯刷个 IIS 的存在感。

在 dotnet 跨平台之后,dotnet 做的网站或者接口类项目和 IIS 的捆绑已经没那么紧密了。但现在仍然有很多项目采用的是 dotnetframework 的架构来开发的,所以,这次就聊聊用 Nginx 来做 IIS 服务器的反向代理。

安装

Nginx 的安装载体,可以选择 Windows 服务器,也可以是 Linux 内核的服务器,也可以直接通过 Docker 镜像来安装。我这里以 docker 为例。

--拉取镜像docker pull nginx:latest--查看docker images--安装docker run --name mynginx -p 8866:80 -d nginx
复制代码

完成后访问本地 80 端口,看到这个界面就是安装成功了

部署 IIS 站点

这一步,就不用说了吧~~

简单点的话,可以直接整两个静态页,分别不在不同服务器或者一台服务器的不同端口上

负载配置

这里由于我用的是容器环境下的 nginx,所以要修改 nginx 的配置文件

修改的方式,一般是两种,要么 docker exec 命令进入容器内的 Linux 环境,修改配置文件,要么就是直接把修改好的配置文件挂载到容器上,两种都可以,看情况。

我这里把两种方式都列出来

  • 直接修改 docker 内 nginx 配置

--进入docker内的linux环境docker exec -it mgninx bash--编辑修改nginx的配置文件vim /etc/nginx/nginx.conf
复制代码

然后按需修改就好,这里需要注意的是,容器内的 linux 环境默认是没有安装 vim 的,需要自己安装一下

apt-get update & apt-get install vim
复制代码
  • 直接挂载修改好的配置文件

docker run --name mynginx -p 8866:80 -v /home/tony/nginx/nginx-docker.conf:/etc/nginx/nginx.conf -v /home/tony/nginx/log:/var/log/nginx -d nginx
复制代码

-v 就是挂载文件用的,第一个-v 表示将你本地的 nginx.conf 覆盖你要起启动的容器的 nginx.conf 文件,第二个表示将日志文件进行挂载,就是把 nginx 服务器的日志写到你 docker 宿主机的/home/docker-nginx/log/下面

说完了配置方式,接着来说具体的配置内容,主要就是 2 点

1 是配置好集群,2 是配置好代理转发机制,就直接截图了


#配置服务器集群	upstream tonysite{						#可以用weight参数来配置权重,值越高,访问概率越大,			#server 10.185.3.130:82 weight=1;			#server 10.185.3.131:82 weight=2;			#ip_hash是用来分配ip的,将来访的用户ip固定分配到集群中的某一个地址,适合比较老的站点			#ip_hash			server 10.185.3.130:82;			server 10.185.3.131:82;	}    server {	        listen       80;        server_name  localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#全局转发 location / { #配置反向代理访问地址,和upstream保持一致 proxy_pass http://tonysite; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
#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; }
# proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #}
# deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
复制代码

好了,配置完成后,启动 docker 容器

先看看不访问反向代理,直接访问的效果


然后,访问反向代理的站点


可以看到,成功访问了目标站点,响应头显示也由 iis 变成了 nginx

为了区分出反向代理指向的具体是哪台服务器,可以写个简单的 txt 来区分


说明,我们的配置全部生效了。

好了,就是这些。

发布于: 刚刚
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
Nginx+IIS做站点访问负载均衡