Nginx的好處相信我不必多說了,它作為一個相當輕量級的開源Web 服務器以及反向 Proxy伺服器而深受歡迎。越來越多的公司已經對它產生興趣,包括我們公司的許多部門,利用它進行負載平衡和資源管理,之前寫過一篇關於利用Nginx進行負載平衡的文章(http://www.cnblogs.com/liping13599168/archive/2011/04/15/2017369.html)。
本篇文章介紹怎樣通過Nginx進行反向 Proxy,並運行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中網站的反向 Proxy,當然您也可以通過對其他Web伺服器進行反向 Proxy,如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進行反向 Proxy。修改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的情況下運行良好了:)