Nginx的好处相信我没必要多说了,它做为一个至关轻量级的开源Web 服务器以及反向代理服务器而深受欢迎。愈来愈多的公司已经对它产生兴趣,包括咱们公司的许多部门,利用它进行负载均衡和资源管理,以前写过一篇关于利用Nginx进行负载均衡的文章(http://www.cnblogs.com/liping13599168/archive/2011/04/15/2017369.html)。html
本篇文章介绍怎样经过Nginx进行反向代理,并运行asp.net网站,测试环境我使用的是Win7系统。nginx
首先,须要下载Nginx的安装包:windows
http://nginx.org/en/download.html,这里我下载最新版本:nginx/Windows-1.1.16浏览器
解压包能够看到目录:服务器
nginx就是执行文件的入口,打开conf目录,能够看到nginx.conf文件,这个做为Nginx主要的配置入口:app
server {
listen 8000;
server_name 127.0.0.1;负载均衡
#charset koi8-r;asp.net
…socket
}tcp
这里我将默认的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配置文件中添加这两行:
如今运行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的状况下运行良好了:)