我是群里的jocke
通過CDN(nginx) 轉(zhuǎn)發(fā)到workerman chat 獲取的ip 都是 CDN 的ip,想獲取真是的用戶ip ,想改造的話,該從哪個地方入手,嘗試著修改了 Workerman\Protocols\Websocket.php 增加了 parseHttpHeader 方法里面對 $buffer的解析,但在events中卻提示未定義;
奧總給的回答是
js獲取到了,然后websocket自己發(fā)給wm
方法不錯,不過,這樣的話,IP,就可以偽造了
=================以下是Websocket.php接到的header的$buffer================
GET / HTTP/1.1
Host: ws.xxxx.com
X-Real-IP: 116.235.214.218
X-Forwarded-For: 116.235.214.218
Connection: close
Pragma: no-cache
Cache-Control: no-cache
Origin: http@//192.168.0.196
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Sec-WebSocket-Key: wY4G04lTDKqW8nQkOV50dA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
注:Origin: http@//192.168.0.196 @換成: 我的權(quán)限不讓發(fā)站外鏈接
==========================events內(nèi)獲取到的$_SERVER============================
array(5) {
=>
string(10) "59.56.79.2"
=>
int(8293)
=>
string(9) "127.0.0.1"
=>
int(80)
=>
string(20) "7f00000108fd00000001"
}
因為cdn 層是服務商那邊提供,沒辦法再做其他調(diào)整,所以想從wm 中入手,events內(nèi)想獲取到連接帶過來的真實ip