我只是實現的OAuth我的服務器上。 爲了驗證我需要通過標記爲一"Header"
關鍵"Authorization"
。訪問客戶端發送了頭後面的負載平衡器
這個偉大的工程在當地,但是當我因爲系統的背後是豆莖負載平衡器此代碼部署到我的生產服務器,我沒有得到我的個人EC2實例任何接頭PHP運行時。
+---------------+ +----------------+
| | | |
+----------> | Load Balancer+---> | EC2 Server |
| | | |
| | | |
+----------+----+ +----------------+
|
| +-----------------+
| | |
| | EC2 Server |
+--------> | |
| |
+-----------------+
我本來與客戶端IP相同的問題,在服務器會給我後面的負載平衡器IP爲$_SERVER['REMOTE_ADDR']
。我通過這樣做修復了
if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip_array = explode(",", getenv('HTTP_X_FORWARDED_FOR'));
$_SERVER['REMOTE_ADDR'] = trim($ip_array[0]);
}
在我的index.php上,我試着做die(var_dump($_SERVER))
。 但我看不到任何我發送的標題。
我看到HTTP_X_FORWARDED_FOR,HTTP_X_FORWARDED_PORT,HTTP_X_FORWARDED_PROTO但沒有涉及頭。
怎樣才能讓我的個人服務器上的頭部穿過了豆莖負載平衡器後?
'getallheaders()'怎麼樣? http://php.net/manual/en/function.getallheaders.php –
啊,這真的有效!這麼奇怪 – user391986