一個用 express 寫的網站,本地運行,監聽 4000 端口。在本地的 Apache 服務器上配置了反向代理:
<VirtualHost *:80>
ServerName mysite.com
ProxyRequests off
ProxyPass / http://localhost:4000/
ProxyPassReverse / http://localhost:4000/
</VirtualHost>
這樣訪問 mysite.com 就可以定向到 express 的網站了。
我遇到了一個這樣的問題,express寫的網站中訪問了 req.headers.host 獲取用戶訪問的域名,我期望獲取到的值是 mysite.com ,但獲得的值卻是 localhost:4000 。這個問題如何解決呢?本機的80端口被apache佔用了,因爲還有 PHP 寫的網站也要運行。
我的目的是獲得用戶訪問本站的地址,有沒有別的什麼方法知道?
回复 (6)
M
赞 & 挖坟...
I
mk
X
Apache (以及 nginx) 在转发请求的时候会在 header 中加上一个 X-Forwarded-Host 字段用于表明原始请求的地址。
于是,在你的 node 应用中,可以使用 req.headers['X-Forwarded-Host'] 或者 req.header('X-Forwarded-Host')来获取它。
B
引用 xqunixApache (以及 nginx) 在转发请求的时候会在 header 中加上一个 X Forwarded Host 字段用于表明原始请求的地址。 于是,在你的 node 应用中,可以使用 r...
X-Forwarded-Host 是標準的嗎?如果我這麼做了豈不是要與apache或nginx耦合?
X
引用 xqunixApache (以及 nginx) 在转发请求的时候会在 header 中加上一个 X Forwarded Host 字段用于表明原始请求的地址。 于是,在你的 node 应用中,可以使用 r...
@byvoid X-Forwarded 系列现在仍然处于起草阶段(可以参见 IETF 上的草案 ),但是它其实已经是事实上的标准了,几乎所有主流的web服务器都支持它。
B
引用 xqunixApache (以及 nginx) 在转发请求的时候会在 header 中加上一个 X Forwarded Host 字段用于表明原始请求的地址。 于是,在你的 node 应用中,可以使用 r...
@xqunix 既然這樣我就先測試X-Forwarded-Host是否存在,如果沒有再讀取 host
参与回复
登录后即可参与回复。登录