2017-02-25 78 views
0

我在Ubuntu 16.04上,我有Kestrel服務器在虛擬機上運行。
使用nginx作爲反向代理將整個流量重定向到那裏。.NET核心絕對鏈接指向本地主機

我的虛擬主機提供商是這樣的:

var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseUrls("http://*:5000") 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 

當我試圖讓完整的URL,使用這種方法的操作:

Url.Action("Index", "User", null, HttpContext.Request.Scheme); 

它用於本地主機,而不是域返回地址。

所以不是:

hxxp://domain.com/user

我越來越

hxxp://本地主機:5000 /用戶

它與應用程序或寧可nginx安裝程序有關嗎?

回答

0

這個設置的事情是,原始域名永遠不會到達Kestrel服務器,因此ASP.NET MVC不知道它。取而代之的是,當作爲反向代理服務器時,nginx會向localhost:5000發出請求,這就是爲什麼當您嘗試從應用程序生成絕對url時,它會使用此代替原來的來自客戶端的url。

一種可能的方式是將nginx配置爲將原始URL作爲一些自定義標題發送,但是您需要使用自定義url助手來讀取此助手並生成正確的url。由於這個原因,我會建議你在你的ASP.NET MVC應用程序中只使用相對URL:

Url.Action("Index", "User") 
+0

我知道FastCGI協議有特殊的頭文件,python框架瓶在生成URL時會考慮到它們。這裏有類似的東西嗎? –

+0

我不知道URL助手會自動考慮這些頭文件。 –

+0

問題是,當我想發送電子郵件與例如一些邀請鏈接。這必須是完整的網址。任何提示? –