2019年8月28日

Node js 架在 IIS上無法取得使用者 IP 位址問題 for iisnode

因為一些原因,需要把 node js 架設在 IIS 上,架設方式如下:https://pippenhsiao.blogspot.com/2018/09/nodejs-x-swagger-iis.html

但因為這樣,在express 升級為 4.x 以上時,導致我本來要取得 client ip 的程式,已經無法正常執行。

找了很久,終於解決了這個問題,以下是方法:

首先,打開 IIS  >> 首頁 >> 找到 「記錄」



 


點選「選取欄位」




自訂欄位 >> 新增爛位 加入「x-forwarded-for」 




「記錄」 >> 右上角「動作」 >> 「套用」 點擊它,做一個儲存的動作。


最後一個步驟,因為,在架 IIS 上,所以,每個 node js 在架設的時候,在該資料夾內一定會有個 web.config,打開這個 web.config 

在 <system.webServer> 裡加入

<iisnode enableXFF="true" />









這樣就可以在 app.js 上測試看看,例如:

app.get('/swagger/clientip', function (req, res) {
      var ip = req.headers['x-forwarded-for'];
      res.send("Client IP : " + ip)
  
});




















沒有留言:

張貼留言