mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-26 04:31:37 +08:00
支持获取http反向代理真实客户端ip: #1388
This commit is contained in:
parent
6291ee704c
commit
d30869d0c9
@ -204,10 +204,13 @@ dirMenu=1
|
|||||||
#访问 http://127.0.0.1/app_b/file_b 对应的文件路径为 /path/to/b/file_b
|
#访问 http://127.0.0.1/app_b/file_b 对应的文件路径为 /path/to/b/file_b
|
||||||
#访问其他http路径,对应的文件路径还是在rootPath内
|
#访问其他http路径,对应的文件路径还是在rootPath内
|
||||||
virtualPath=
|
virtualPath=
|
||||||
#禁止后缀的文件缓存,使用“,”隔开
|
#禁止后缀的文件使用mmap缓存,使用“,”隔开
|
||||||
#例如赋值为 .mp4,.flv
|
#例如赋值为 .mp4,.flv
|
||||||
#那么访问后缀为.mp4与.flv 的文件不缓存
|
#那么访问后缀为.mp4与.flv 的文件不缓存
|
||||||
forbidCacheSuffix=
|
forbidCacheSuffix=
|
||||||
|
#可以把http代理前真实客户端ip放在http头中:https://github.com/ZLMediaKit/ZLMediaKit/issues/1388
|
||||||
|
#切勿暴露此key,否则可能导致伪造客户端ip
|
||||||
|
forwarded_ip_header=
|
||||||
|
|
||||||
[multicast]
|
[multicast]
|
||||||
#rtp组播截止组播ip地址
|
#rtp组播截止组播ip地址
|
||||||
|
@ -124,6 +124,7 @@ const string kVirtualPath = HTTP_FIELD "virtualPath";
|
|||||||
const string kNotFound = HTTP_FIELD "notFound";
|
const string kNotFound = HTTP_FIELD "notFound";
|
||||||
const string kDirMenu = HTTP_FIELD "dirMenu";
|
const string kDirMenu = HTTP_FIELD "dirMenu";
|
||||||
const string kForbidCacheSuffix = HTTP_FIELD "forbidCacheSuffix";
|
const string kForbidCacheSuffix = HTTP_FIELD "forbidCacheSuffix";
|
||||||
|
const string kForwardedIpHeader = HTTP_FIELD "forwarded_ip_header";
|
||||||
|
|
||||||
static onceToken token([]() {
|
static onceToken token([]() {
|
||||||
mINI::Instance()[kSendBufSize] = 64 * 1024;
|
mINI::Instance()[kSendBufSize] = 64 * 1024;
|
||||||
@ -150,6 +151,7 @@ static onceToken token([]() {
|
|||||||
"</html>"
|
"</html>"
|
||||||
<< endl;
|
<< endl;
|
||||||
mINI::Instance()[kForbidCacheSuffix] = "";
|
mINI::Instance()[kForbidCacheSuffix] = "";
|
||||||
|
mINI::Instance()[kForwardedIpHeader] = "";
|
||||||
});
|
});
|
||||||
|
|
||||||
} // namespace Http
|
} // namespace Http
|
||||||
|
@ -223,6 +223,8 @@ extern const std::string kNotFound;
|
|||||||
extern const std::string kDirMenu;
|
extern const std::string kDirMenu;
|
||||||
// 禁止缓存文件的后缀
|
// 禁止缓存文件的后缀
|
||||||
extern const std::string kForbidCacheSuffix;
|
extern const std::string kForbidCacheSuffix;
|
||||||
|
// 可以把http代理前真实客户端ip放在http头中:https://github.com/ZLMediaKit/ZLMediaKit/issues/1388
|
||||||
|
extern const std::string kForwardedIpHeader;
|
||||||
} // namespace Http
|
} // namespace Http
|
||||||
|
|
||||||
////////////SHELL配置///////////
|
////////////SHELL配置///////////
|
||||||
|
@ -670,6 +670,11 @@ bool HttpSession::emitHttpEvent(bool doInvoke){
|
|||||||
return consumed;
|
return consumed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string HttpSession::get_peer_ip() {
|
||||||
|
GET_CONFIG(string, forwarded_ip_header, Http::kForwardedIpHeader);
|
||||||
|
return forwarded_ip_header.empty() ? TcpSession::get_peer_ip() : _parser.getHeader()[forwarded_ip_header];
|
||||||
|
}
|
||||||
|
|
||||||
void HttpSession::Handle_Req_POST(ssize_t &content_len) {
|
void HttpSession::Handle_Req_POST(ssize_t &content_len) {
|
||||||
GET_CONFIG(size_t,maxReqSize,Http::kMaxReqSize);
|
GET_CONFIG(size_t,maxReqSize,Http::kMaxReqSize);
|
||||||
|
|
||||||
|
@ -97,6 +97,9 @@ protected:
|
|||||||
*/
|
*/
|
||||||
void onWebSocketDecodeComplete(const WebSocketHeader &header_in) override;
|
void onWebSocketDecodeComplete(const WebSocketHeader &header_in) override;
|
||||||
|
|
||||||
|
//重载获取客户端ip
|
||||||
|
std::string get_peer_ip() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Handle_Req_GET(ssize_t &content_len);
|
void Handle_Req_GET(ssize_t &content_len);
|
||||||
void Handle_Req_GET_l(ssize_t &content_len, bool sendBody);
|
void Handle_Req_GET_l(ssize_t &content_len, bool sendBody);
|
||||||
|
Loading…
Reference in New Issue
Block a user