前言
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内的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 来区分
说明,我们的配置全部生效了。
好了,就是这些。
评论