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的狀況下運行良好了:)