需求

  现在有些后辍的域名不支持备案,这个时候需要用免备案主机或空间做个反向代理,这样可实现内容存放在国内主机统一管理

实现

  用 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实反向代理-收藏相关推荐

  1. Nginx——反向代理 负载均衡(无理论,案例实操)

    1.开篇 有关Nginx的下载安装.相关理论内容,这里就不再多说了,详情可以参考我的这几篇文章: https://szh-forever-young.blog.csdn.net/article/det ...

  2. 【Kubernetes】k8s的svc所有概念和实操详细说明(含镜像和代码)【2】【svc作用是端口转发相关】【含LB和ingress【反向代理】-部署使用】

    文章目录 service[svc]所有概念 环境准备 端口映射常规测试 创建pod 主机端口映射测试 修改pod副本数并测试 svc[service] 关于Service 定义Service的意义 没 ...

  3. 带你了解什么是Nginx(实操反向代理-负载均衡)

    文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...

  4. nginx实现对websocket加密协议wss协议的反向代理以及websocket整合springboot入门(踩坑)

    出发点 最近公司需要有一个推送前端消息的需求 首选websocket进行推送,也做过客服系统接触过,最近看了一点websocket的相关内容记录总结一下. 什么是websocket websocket ...

  5. 配置nginx反向代理jira并实现https

    摘要: 配置nginx反向代理jira并实现https 配置Tomcat 在本文中,我们设置可以在地址http://jira.aniu.so/jira(标准HTTP端口80)上访问JIRA,而JIRA ...

  6. nginx静态资源反向代理

    nginx静态资源反向代理 server { listen 80; server_name music.didi365.com; index index.php index.html index.ht ...

  7. nginx反向代理下thinkphp、php获取不到正确的外网ip

    nginx反向代理下thinkphp.php获取不到正确的外网ip 在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ ...

  8. nginx ------反向代理和负载均衡

    nginx ------反向代理和负载均衡 最近由于公司的业务增长 服务器承受不住压力经常出现崩溃现象 为了解决 使用nginx的负载均衡解决,以下是操作步骤: 1.nginx 的负载均衡:将压力分散 ...

  9. nginx_反向代理

    nginx_反向代理 1 worker_processes 1; 2 3 events { 4 5 worker_connections 1024; 6 7 } 8 9 10 11 http { 12 ...

最新文章

  1. ES5-Array-join
  2. 上海高考听说测试什么软件,2021上海市高考外语听说测试模拟系统使用方法及注意事项...
  3. rails3 cookie setting
  4. 数据库-SQL中like的用法
  5. mysql 代码执行时间_mysql 显示SQL语句执行时间的代码
  6. jdbc oracle存储过程,java jdbc 执行oracle存储过程
  7. Kubernetes1.8.4安装指南 -- 1. 环境准备
  8. java反射机制_java反射机制的讲解
  9. Spring @RestController、@Controller区别
  10. 最大 / 小的K个数
  11. compareTo的实现策略
  12. php 一键wifi,Mac wifi 自动控制脚本
  13. html中一条横线代码怎么写_Vue VS React 在开发同一记账项目中二者的对比
  14. 线性同余法随机数生成
  15. php中编码转换,php程序中的编码转换
  16. ajax php投票记录功能,PHP 实例 AJAX 投票 | 菜鸟教程
  17. Rant ?? 我爱每一片绿叶
  18. python中average什么意思,Python3——numpy中mean和average的区别
  19. 关于arduino的各种网站
  20. 重磅直播丨迈向移动数字金融 —— 神州信息并购云核网络线上发布会

热门文章

  1. 基于MySQL和JavaFX的学生管理系统
  2. 《恋上数据结构第1季》二叉搜索树BST
  3. python进阶06并发之二技术点关键词
  4. 结构化思维:掌握这3点,分析报告不再愁
  5. 麒麟Linux关闭telnet,银河麒麟系统管理员使用手册(30页)-原创力文档
  6. h5外卖源码php_从零搭建外卖CPS平台小程序开发
  7. 三元组法矩阵加法java_C语言实现矩阵加法、减法、乘法和数乘运算
  8. php语言输出九九乘法表_PHP 输出九九乘法表
  9. 机器学习入门笔记(四):朴素贝叶斯分类
  10. 计算机学术英语常见词汇短语总结