Swoole 小技巧 –––– Swoole取X-Forwarded-For HTTP 请求头
在真正使用Swoole(模块, 非 swooleFramework)开发过项目后, 你会发现有不少的坑. 笔者碰到的第一个就是swoole_http_request支持不完整.
swoole_http_request哪些方面的坑呢?
-
不支持 X-Forwarded-For, 这在 Nginx 场景下很致命, 应用取不到客户端真实 IP 还不允许 NGINX 追加字段.
-
不支持 HTTP 304 的 If-None-Match 和 If-Modified-Since.
-
不支持 HTTP 206 的 Range
-
...
解决方案
我的方案比较另类, 也不一定适合全部场景, 使用者自己斟酌.
location / {
set $x_cookie '; x_forwarded_for=';
set $x_cookie $x_cookie$remote_addr;
proxy_set_header Cookie $http_cookie$a_cookie;
proxy_pass http://swoole_server;
}
然后在 swoole 的 onRequest 里
$http->on('request', function(swoole_http_request $req, swoole_http_response $res) use($http) {
$req->server['remote_addr'] = $req->cookie['x_forwarded_for'];
$req->server['remote_addr'] = trim(end(explode(',', $req->server['remote_addr'])));
...
});
关键字:php, swoole, #req-# x_cookie
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!