1. 程式人生 > >利用Nginx+Mono+Fastcgi代替IIS對Asp.Net進行反向代理

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

瀏覽器中 -m 端口 mon .org 進行 ica 管理 負載

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,顯示:

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