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

來源:互聯網
上載者:User

標籤:測試   運行時   lis   管理   執行檔案   模組   相關   運行   版本   

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.