Nginx的好处相信我不必多说了,它作为一个相当轻量级的开源Web 服务器以及反向代理服务器而深受欢迎。越来越多的公司已经对它产生兴趣,包括我们公司的许多部门,利用它进行负载均衡和资源管理,之前写过一篇关于利用Nginx进行负载均衡的文章(http://www.cnblogs.com/liping13599168/archive/2011/04/15/2017369.html)。

本篇文章介绍怎样通过Nginx进行反向代理,并运行asp.net网站,测试环境我使用的是Win7系统。

首先,需要下载Nginx的安装包:

http://nginx.org/en/download.html,这里我下载最新版本:nginx/Windows-1.1.16

解压包可以看到目录:

nginx就是执行文件的入口,打开conf目录,可以看到nginx.conf文件,这个作为Nginx主要的配置入口:

server { 
        listen       ; 
        server_name  127.0.0.1;

#charset koi8-r;

}

这里我将默认的80改成8000,作为nginx的Web服务器的默认端口,从这里我们可以这样理解,8000作为网站对外公布的Web端口,即代理服务的端口,现在,我就可以让它承载内网中的相关Web站点。

现在我在IIS服务器上添加一个新站点:

在上面部署一个asp.net网站,端口设置为88,88端口可以看作内网中的一个非开放的端口,网站放在目录 D:\WebApplication\WebApplication 中,现在修改nginx.conf中的配置为:

location / { 
               root D:\WebApplication\WebApplication; 
               index index.html index.htm default.aspx Default.aspx; 
               proxy_pass http://127.0.0.1:88;   
                        proxy_set_header X-Real-IP $remote_addr;   
        }

其中,root参数可以设置对应网站的目录,index可以设置站点的默认页面,proxy_pass对于IIS中的88端口对应站点进行代理;

现在启动nginx,命令为:start nginx;而停止命令为:nginx –s stop

现在在浏览器中输入:http://127.0.0.1:8000/,显示:

OK!测试成功,这样就是实现了对IIS中站点的反向代理,当然您也可以通过对其他Web服务器进行反向代理,如Apache,Resin,Fastcgi等等。这里我想要分享一个Fastcgi代替IIS作为Web服务器的方案。

我们可能知道在Linux上Mono的部署运行,可以通过非IIS的方式进行运行,包括Apache,Resin,Fastcgi,Lighttpd等等,现在我们就在Windows上利用Mono的Fastcgi模块实现在非IIS宿主情况下运行asp.net网站。

去Mono官方网站下载Mono for windows版本安装包:

http://www.go-mono.com/mono-downloads/download.html

下载包为mono-2.10.8-gtksharp-2.12.11-win32-1.exe,安装一下,在我们本地的GAC上包括了Mono的相关DLL;

继续创建一个asp.net站点,这次不需要把站点部署的IIS上面,这次利用nginx通过fastcgi进行反向代理。修改nginx.conf配置文件为:

location / { 
    root Web; 
    index index.html index.htm default.aspx Default.aspx; 
        fastcgi_index Default.aspx; 
       fastcgi_pass 127.0.0.1:9000; 
       include fastcgi_params; 
}

其中,Web是站点存放的目录,fastcgi_index作为fastcgi的默认页面,fastcgi_pass 设置它的站点,这里设置一个端口9000,实际上它是一个tcp协议的端口。

另外需要在fastcgi_params配置文件中添加这两行:

fastcgi_param  PATH_INFO          "";
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

现在运行Mono-2.10.8 Command Prompt:

输入mono中的fastcgi-mono-server命令,可以使用两种方式:fastcgi-mono-server2和fastcgi-mono-server4,其中前者对应CLR2.0运行时宿主,后者对应CLR4.0运行时宿主:

fastcgi-mono-server2 /applications=/:. /socket=tcp:127.0.0.1:9000 /port=8000 /root="F:\nginx-1.1.16\Web"

执行一下,接着重新执行nginx,在浏览器再次输入:http://127.0.0.1:8000/default.aspx,显示:

显示正常!说明配置的asp.net站点已经在非IIS的情况下运行良好了:)

利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理的更多相关文章

  1. nginx 在windows平台上对asp.net做反向代理

    代理服务器 当客户机向站点提出请求时,请求将转到代理服务器.然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器.内容服务器再通过该通道将结果回传给代理服务器.代理服务器将检索到的信 ...

  2. 【转】windows下nginx+mono+fastCGI部署asp.net网站

    原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine ...

  3. 使用 Nginx 对 ASP.NETCore网站 或 Docker 等进行反向代理,宝塔面板对 ASP.NET Core 反向代理

    1,Nginx 的 配置文件 Nginx 可以配置反向代理.负载均匀等, 其默认配置文件名为 nginx.conf . 一般存放于 /你的安装目录/nginx/conf  下 Nginx 加载配置信息 ...

  4. ASP.NET Core 反向代理部署知多少

    引言 最近在折腾统一认证中心,看到开源项目IdentityServer4.Admin集成了IdentityServer4和管理面板,就直接拿过来用了.在尝试Nginx部署时遇到了诸如虚拟目录映射,请求 ...

  5. IIS 下 部署nodejs 使用反向代理

    目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com  .ww ...

  6. 利用nginx实现负载均衡和动静分离

    1.Nginx介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 . Nginx 是由 ...

  7. 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理

    上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老 ...

  8. Asp.Net Core使用Nginx实现反向代理

    ---恢复内容开始--- 前两篇文章介绍了使用Docker作为运行环境,用Nginx做反向代理的部署方法,这篇介绍一下使用Nginx配合.Net Core运行时直接在Liunx上裸奔的方法. 一.安装 ...

  9. 利用Nginx实现反向代理web服务器

    一.Nginx简介 Nginx是一个很强大的高性能Web服务器和反向代理服务器,它具有很多非常优越的特性: 可以高并发连接 内存消耗少 成本低廉 配置文件非常简单 支持Rewrite重写 内置的健康检 ...

随机推荐

  1. Thinking in Java 笔记初衷

    当读到第十章的时候,发现之前读过的内容很难准确的记忆起来,这样给后续的阅读带来了一定的困惑,而之前也没有做适当的可读性的复习笔记,所以发现重新找后续阅读需要的知识点时,是有一定的困难的. 同时在知乎今 ...

  2. mysql 1030 Got error 28 from storage engine

    mysql 1030 Got error 28 from storage engine 错误原因:磁盘临时空间不够. 解决办法:df -h 查看设备存储的使用情况 du -h --max-depth= ...

  3. 三种实例化bean的方式

    在spring中有三中实例化bean的方式: 一.使用构造器实例化:(90%通常使用的一个方法) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化. 每种实例化所采用的配置是不一样的: 一. ...

  4. JavaWeb学习总结(十五)--过滤器的应用

    一.解决全站字符乱码(post和get中文编码问题) 乱码问题: 获取请求参数中的乱码问题: POST请求:request.setCharacterEncoding("utf-8" ...

  5. (四)linux网络编程

    一.CS架构,BS架构 (1)CS架构介绍(client server,客户端服务器架构),例如:qq.360网盘(2)BS架构介绍(broswer server,浏览器服务器架构)例如:浏览器 二. ...

  6. iOS开发 tabBarController选中状态

    self.tabBarController.selectedIndex = 0;  // 默认是0:

  7. React Native For Android 架构初探

    版权声明:本文由王少鸣原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/171 来源:腾云阁 https://www.qclo ...

  8. OneProxy FAQ 之proxy-user-list

    OneProxy为了实现拆库拆表,必须有能力管理多个主从集群. 启动脚本截取如下: ################################################# --proxy- ...

  9. 【bzoj3160】【xsy1726】万径人踪灭

    [bzoj3160]万径人踪灭 题意 给定一个由'a'和'b'构成的字符串,求不连续回文子序列的个数. \(n\leq 100000\) 分析 还是蛮不错的. 这道题基本上是自己想到的. 除了没有利用 ...

  10. R语言自带数据包

    向量 euro    #欧元汇率,长度为11,每个元素都有命名 landmasses    #48个陆地的面积,每个都有命名 precip    #长度为70的命名向量 rivers    #北美14 ...