2015-10-13 59 views
0

我使用不同的ASP應用程序運行IIS 8.5的Windows Server 2012 R2。現在我開發了一個監聽端口3000的Node.js應用程序。此外,還有一個DNS記錄,它完全指向此服務器。Node.js:在IIS中將端口3000與DNS綁定

如何在同一臺服務器上運行節點應用程序而不涉及IIS(iisnode不是選項)?它應該仍然監聽端口3000(或類似的),但是當用戶輸入域名wihtout端口時,它應該識別它併爲節點應用程序提供服務。

使用一個開發服務器(沒有DNS綁定),它只是通過在ip地址的末尾寫入端口來工作(如10.10.10.10:3000)。但是,通過DNS記錄,我無法讓這個工作。 sub.domain.com:3000不顯示任何內容,並且sub.domain.com正在重定向到IIS起始頁。我能在這裏做什麼?

+0

您需要一個反向代理才能將sub.domain.com(無端口)指向節點應用程序。 (iis可以處理這個)每次只有一個應用程序可以監聽任何特定的端口。 –

回答

0

sub.domain.com:3000應該工作。您可能有一些防火牆阻止對該端口的外部請求。

當有人輸入http://sub.domain.com(沒有端口)時,客戶端默認發送請求到端口80(如果使用https://,則發送443)。如果IIS已經在端口80上偵聽,那麼就沒有辦法讓node.js響應這個端口了。

你可以做的是設置一個快如閃電的反向代理(如NGINX)並將其綁定到端口80.將IIS移動到另一個端口,如8080.配置NGINX以將端口80的請求轉發到另一個端口,在傳入請求的域名。

配置是這樣的:

server { 
    listen 80; 

    server_name domain.com; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://127.0.0.1:8080; 
    } 
} 

server { 
    listen 80; 

    server_name sub.domain.com; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
     proxy_pass http://127.0.0.1:3000; 
    } 
} 

您也可以使用IIS作爲反向代理,但如你所說,你不希望涉足的要求IIS,所以會NGINX是個不錯的選擇。

+0

感謝您的詳細解答。反向代理似乎是這種情況下的關鍵字。我沒有涉及到IIS的意思是部分正確的;我決不會使用iisnode,因爲這對我來說工作不太好。使用IIS作爲反向代理似乎更像是一種選擇。我會試試這個。 –

+0

好的,得益於這些說明,我設法讓IIS作爲反向代理工作。一切都很好,再次感謝! http://www.myconnectionserver.com/support/tutorials/v90/iisProxy/index.html –

相關問題