buonzz/reverseproxy

执行反向代理功能的PHP脚本

1.0.0 2014-04-18 05:01 UTC

This package is auto-updated.

Last update: 2024-09-06 08:58:05 UTC


README

##反向代理PHP脚本

一个简单的PHP脚本,可以用作反向代理。虽然你可以使用Nginx、mod_proxy或Squid等专用软件来实现这一功能,但在某些情况下,你可能更喜欢在单个文件夹中仅使用PHP脚本。可能有各种原因

  • 你在一个共享主机上,无法修改服务器全局设置
  • 由于某些原因,你必须将子域的内容作为另一个子文件夹提供。例如,你有site.yourdomain.com(服务器1)并希望它可以在另一台服务器上通过www.domain2.com/site访问
  • 你想要缓存内容
  • 公开无法访问Web服务器
  • 你想要提供一个简单的代理服务器
  • 访问者所在国家被限制访问实际网站
  • 匿名化你的用户

要求

  • PHP >= 5.2
  • 启用Apache mod_rewrite
  • 启用cURL扩展

安装

使用composer安装它

composer create-project buonzz/reverseproxy

编辑config.php

define('MASKED_DOMAIN', 'http://www.google.com');
define('PROXY_SUBFOLDER', 'reverseproxy');
define('FOLLOW_LOCATION', FALSE);
  • MASKED_DOMAIN是这个脚本将从其获取内容的站点,不应有尾随斜杠。
  • PROXY_SUBFOLDER如果你将脚本放置在子文件夹中,则使用此选项,例如 http://www.yourdomain.com/reverseproxy 如果你将其放置在域的根目录中,则将其留空
  • FOLLOW_LOCATION - 表示脚本是否将跟随源站点的重定向

编辑 .htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ /reverseproxy/index.php/$1 [L]

这个指令允许反向代理捕获针对原始域的URI,例如

http://www.originaldomain.com/blog/102014/hello-world

使用此设置,你可以使用

http://www.yourdomain.com/reverseproxy/blog/102014/hello-world

并且uri将被传递到index.php,然后可以将其传递到原始域以获取内容。请记住,如果你从根域提供内容,你只需要使用此

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ /index.php/$1 [L]