PHP实反向代理-收藏
需求
现在有些后辍的域名不支持备案,这个时候需要用免备案主机或空间做个反向代理,这样可实现内容存放在国内主机统一管理
实现
用 php-dynamic-mirror 可实现,并在头部进行域名转换,可实现多个域名反向代理到不同的站点,一共两个文件简单方便,做个收藏
index.php
<?php $domain = $_SERVER['SERVER_NAME']; $mirror = "www.mz.cn"; switch ($domain) { case "www.a.cn":$mirror = "www.az.cn";break; case "www.b.com.cn":$mirror = "www.bz.com";break; default:$mirror = "www.mz.cn"; }$req = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . " HTTP/1.0\r\n"; $length = 0; foreach ($_SERVER as $k => $v) {if (substr($k, 0, 5) == "HTTP_") {$k = str_replace('_', ' ', substr($k, 5));$k = str_replace(' ', '-', ucwords(strtolower($k)));if ($k == "Host")$v = $mirror; # Alter "Host" header to mirrored serverif ($k == "Accept-Encoding")$v = "identity;q=1.0, *;q=0"; # Alter "Accept-Encoding" header to accept unencoded content onlyif ($k == "Keep-Alive")continue; # Drop "Keep-Alive" headerif ($k == "Connection" && $v == "keep-alive")$v = "close"; # Alter value of "Connection" header from "keep-alive" to "close"$req .= $k . ": " . $v . "\r\n";} } $body = @file_get_contents('php://input'); $req .= "Content-Type: " . $_SERVER['CONTENT_TYPE'] . "\r\n"; $req .= "Content-Length: " . strlen($body) . "\r\n"; $req .= "\r\n"; $req .= $body;#print $req;$fp = fsockopen($mirror, 80, $errno, $errmsg, 30); if (!$fp) {print "HTTP/1.0 502 Failed to connect remote server\r\n";print "Content-Type: text/html\r\n\r\n";print "<html><body>Failed to connect to $mirror due to:<br>[$errno] $errstr</body></html>";exit; }fwrite($fp, $req);$headers_processed = 0; $reponse = ''; while (!feof($fp)) {$r = fread($fp, 8192);if (!$headers_processed) {$response .= $r;$nlnl = strpos($response, "\r\n\r\n");$add = 4;if (!$nlnl) {$nlnl = strpos($response, "\n\n");$add = 2;}if (!$nlnl)continue;$headers = substr($response, 0, $nlnl);$cookies = 'Set-Cookie: ';if (preg_match_all('/^(.*?)(\r?\n|$)/ims', $headers, $matches))for ($i = 0; $i < count($matches[0]); ++$i) {$ct = $matches[1][$i]; # if (substr($ct, 0, 12) == "Set-Cookie: ") {# $cookies .= substr($ct, 12) . ','; # header($cookies); # } elseheader($ct, false); # print '>>' . $ct . "\r\n"; }print substr($response, $nlnl + $add);$headers_processed = 1;} elseprint $r; } fclose ($fp); ?>
.htaccess
<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L] </IfModule>
文件
文件下载
转载于:https://www.cnblogs.com/hantianwei/p/6287497.html
PHP实反向代理-收藏相关推荐
- Nginx——反向代理 负载均衡(无理论,案例实操)
1.开篇 有关Nginx的下载安装.相关理论内容,这里就不再多说了,详情可以参考我的这几篇文章: https://szh-forever-young.blog.csdn.net/article/det ...
- 【Kubernetes】k8s的svc所有概念和实操详细说明(含镜像和代码)【2】【svc作用是端口转发相关】【含LB和ingress【反向代理】-部署使用】
文章目录 service[svc]所有概念 环境准备 端口映射常规测试 创建pod 主机端口映射测试 修改pod副本数并测试 svc[service] 关于Service 定义Service的意义 没 ...
- 带你了解什么是Nginx(实操反向代理-负载均衡)
文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...
- nginx实现对websocket加密协议wss协议的反向代理以及websocket整合springboot入门(踩坑)
出发点 最近公司需要有一个推送前端消息的需求 首选websocket进行推送,也做过客服系统接触过,最近看了一点websocket的相关内容记录总结一下. 什么是websocket websocket ...
- 配置nginx反向代理jira并实现https
摘要: 配置nginx反向代理jira并实现https 配置Tomcat 在本文中,我们设置可以在地址http://jira.aniu.so/jira(标准HTTP端口80)上访问JIRA,而JIRA ...
- nginx静态资源反向代理
nginx静态资源反向代理 server { listen 80; server_name music.didi365.com; index index.php index.html index.ht ...
- nginx反向代理下thinkphp、php获取不到正确的外网ip
nginx反向代理下thinkphp.php获取不到正确的外网ip 在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ ...
- nginx ------反向代理和负载均衡
nginx ------反向代理和负载均衡 最近由于公司的业务增长 服务器承受不住压力经常出现崩溃现象 为了解决 使用nginx的负载均衡解决,以下是操作步骤: 1.nginx 的负载均衡:将压力分散 ...
- nginx_反向代理
nginx_反向代理 1 worker_processes 1; 2 3 events { 4 5 worker_connections 1024; 6 7 } 8 9 10 11 http { 12 ...
最新文章
- ES5-Array-join
- 上海高考听说测试什么软件,2021上海市高考外语听说测试模拟系统使用方法及注意事项...
- rails3 cookie setting
- 数据库-SQL中like的用法
- mysql 代码执行时间_mysql 显示SQL语句执行时间的代码
- jdbc oracle存储过程,java jdbc 执行oracle存储过程
- Kubernetes1.8.4安装指南 -- 1. 环境准备
- java反射机制_java反射机制的讲解
- Spring @RestController、@Controller区别
- 最大 / 小的K个数
- compareTo的实现策略
- php 一键wifi,Mac wifi 自动控制脚本
- html中一条横线代码怎么写_Vue VS React 在开发同一记账项目中二者的对比
- 线性同余法随机数生成
- php中编码转换,php程序中的编码转换
- ajax php投票记录功能,PHP 实例 AJAX 投票 | 菜鸟教程
- Rant ?? 我爱每一片绿叶
- python中average什么意思,Python3——numpy中mean和average的区别
- 关于arduino的各种网站
- 重磅直播丨迈向移动数字金融 —— 神州信息并购云核网络线上发布会