利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理

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       8000; 
        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,显示:

时间: 2024-08-06 03:42:13

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

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

原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布.尽管还是测试

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

引言 最近在折腾统一认证中心,看到开源项目IdentityServer4.Admin集成了IdentityServer4和管理面板,就直接拿过来用了.在尝试Nginx部署时遇到了诸如虚拟目录映射,请求头超长.基础路径映射有误等问题,简单记录,以供后人参考. Nginx 配置路由转发 首先来看下IdentityServer4.Admin的项目结构: IdentityServer4.Admin / ├── Id4.Admin.Api # 用于提供访问Id4资源的WebApi项目 ├── Id4.Ad

IIS 下 部署nodejs 使用反向代理

目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com  .www.jb51.net等等. 当然你也可以自己在targetServer部署自己的程序,在此为了示范,我在targetServer上部署了2个,用的8088端口,程序分别是: http://targetServer:8088/Auditsys/Default.htm http://targetServ

利用nginx的stream模块实现内网端口的转发代理

一.安装nginx使其支持stream #直接使用yum安装,如果使用源码安装编译时加上 --with-stream ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-stream  &&  make  && make install[[email protected] ~]# yum -y install nginx二.配置nginx配置文件 [[email protected]

Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb

架构 Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb 说明:       我在设计系统架构时,进行了大胆的尝试,只用6台Web服务器,达到了可承受4000万PV(页面访问量)的性能: 抛弃了 Apache,因为它能承受的并发连接相对较低: 抛弃了 Squid,因为它在内存利用.访问速度.并发连接.清除缓存等方面不如 Varnish: 抛弃了 PHP4,因为 PHP5 处理面向对象代码的速度要比 PHP4 快,另外,PHP4 已经不再继续

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

上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老周会讲得很细.可能因为这样,博客园每次都把老周的文章撤下首页.不管他,他撤他的,我推我的,Who 怕 Who. 其实,你可以选择 nginx 或 Apache,不过老周更喜欢 nginx 一些,总觉得 Apache 有些别扭.当然了,asp.net core 应用是可以独立运行,所以,你确实可以直接

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

nginx的反向代理和配置

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一  概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接

基于Nginx反向代理及负载均衡

基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是开启的,因为proxy属于nginx内置标准模块,通常实现代理的时候,最核心模块是proxy_pass,用于将用户请求的rui递交至上游服务器的某个URI但这个模块大部分用于location当中,因此要实现将某一URI的访问代理某个上游服务器大致的格式为: location /name/ { pro