我在网上搜索过,但不知道该怎么做。所以我要找的是一个代理,它可以根据我在 URL 中输入的 IP 地址转发 HTTP 查询(GET)。
例如:
我请求:
http://host/query/IP_A
它应该做的是:ME => GET HTTP myhost/query/IP_A => GET IP_A ===> 对 IP_A 进行 GET HTTP 查询并返回给发送者!
我一直在研究 proxypass、reverseproxy、proxymatch 和 mod_rewrite……但我不明白为什么它们根本不起作用!而且我没有日志……当调试时间到来时,这难道不酷吗!:-(
这是我的实际配置:
<VirtualHost *:80>
ServerName myServer
DocumentRoot /home/me/www/htdocs
# RewriteCond ^.*/query/(.*)
# RewriteRule (.*) http://$1 [P]
ProxyPassMatch ^.*/query/(.*) http://$1
ErrorLog logs/me-error_log
CustomLog logs/me-access_log debug
</VirtualHost>
这是一个静态工作示例:
ProxyPass / http://IP_A
ProxyPassReverse / http://IP_A
因此,当我访问 Web 服务器时,它会直接转到 IP 并返回 http 响应。
谢谢您的帮助!
答案1
您的用例有点不清楚。这听起来很像普通的 Web 代理(它接受来自浏览器的请求,然后代表浏览器从远程站点获取内容)。
但要做你想做的事:
<VirtualHost *:80>
RewriteRule ^/query/(.*) http://$1 [P]
<VirtualHost *:80>
这将获取有关的任何内容/query/
并将其附加到http://
,然后对结果发出代理请求。正如@EEAA所说,这是一个安全噩梦(有人可以使用你的服务器攻击远程系统),但它会按照你想要的方式运行。