您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
http反向代理環境下获取真实ip(基於workerman)
发布时间:2022-01-14 23:04:53编辑:雪饮阅读()
上篇講了,https是可以在反向代理環境下通過反向代理的代理方以請求頭傳遞的方式以實現https能拿到實際訪問者的ip,那麽https自然可以,http也是可以的。
nginx:
server
{
listen 80;
server_name www.cece1.com www.cece220807.com;
index index.html index.htm default.php default.htm default.html index.php;
root /www/wwwroot/www.cece1.com;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-56.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/www.cece1.com.conf;
#REWRITE-END
location / {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials: true;
add_header Access-Control-Allow-Headers 'DNT,token,app-token,Authorization,Accept,
Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,
If-Modified-Since,Cache-Control,Content-Type,Range';
if ($request_method = 'OPTIONS') {
return 204;
}
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
set $allow_origin "www.cece1.com";
add_header Access-Control-Allow-Headers Content-Type,api_key,Authorization;
add_header Access-Control-Allow-Origin *;
#proxy_pass http://www.cece1.com/;
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
location /http
{
proxy_pass http://127.0.0.1:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# 这部分是利用http头透传真实客户端ip
proxy_set_header X-Real-IP $remote_addr;
}
access_log /www/wwwlogs/www.cece1.com.log;
error_log /www/wwwlogs/www.cece1.com.error.log;
}
脚本实现:
<?php
use Workerman\Protocols\Http\Request;
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8282');
// 客户端连上来时,即完成TCP三次握手后的回调
$worker->onConnect = function(TcpConnection $connection) {
var_dump("sd:".$_SERVER['HTTP_X_REAL_IP']);
$connection->onMessage=function(TcpConnection $connection,Request $request){
$headers = $request->header();
$connection->send($headers["x-real-ip"]);
};
};
Worker::runAll();
前端访问:
http://www.cece220807.com/http
关键字词:http,反向代理,ip,workerman
相关文章
- https在反向代理環境下获取真实ip(基於workerman實現)
- 基於workerman實現ws获取真實客戶端ip(反向代理環境下)
- workerman系列之nginx配置反向代理于workerman時候實
- workerman系列之tp5(thinkphp5)日志结合workerman使用
- workerman常见问题-php的几种回调写法-类的静态方法作
- workerman常见问题-php的几种回调写法-类方法作为回调
- workerman常见问题-php的几种回调写法-普通函数回调
- workerman作爲客戶端系列之socket5即s5代理搭建基於ce
- workerman作爲客戶端系列之http代理搭建
- workerman作爲客戶端-作爲ws或wss客戶端-做為ws客戶端