squid-cache 的 url_rewrite_program 真正重定向了 URL。换句话说,最终用户得到一个响应,说“将页面从 foo 重定向到 bar”,然后用户向重定向地址发出另一个请求。我不想要这个。
我想实现的是类似于apache的mod_rewrite。我想要一个绝对透明的重写机制。这样用户就可以请求特定的内容,并且他会在没有任何 HTTP 重定向的情况下将其作为响应获取(无论他最初请求的 URL 是什么)。
我想避免通过 http 重定向的原因是因为我不希望最终用户看到内部应用程序结构。例如,他请求“application1.foo.com”,他得到的 URL 的内容要长得多。因此,如果最终用户将其加入书签,他就会将我干净的小 URL (application1.foo.com) 加入书签,这有助于让用户远离这些细节,即使我在未来。例如,我可能最初将 application1.foo.com 映射到 badprovider.com/path/to/file.php,然后将其更改为 goodprovider.com/file.php,用户不会注意到这一点。好处是,例如,最终用户书签将保持正确,并以更具指导性的方式规范他们的行为。
最佳答案
您是否尝试过将 squid 设置为“加速”模式的反向代理?它对我有用:
acl all src all
http_port 3128 accel vhost
cache_peer 127.0.0.1 parent 80 0 no-query originserver name=myAccel
acl our_sites dstdomain your_domain.net
http_access allow our_sites
http_access deny all
cache_peer_access myAccel allow our_sites
cache_peer_access myAccel deny all
negative_ttl 0
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
coredump_dir /var/spool/squid
your_domain.net 是您要重定向的域
关于http - 如何重写 Squid-Cache 内部 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592727/