我正在与一个组织合作,该组织已部署 Varnish 作为其所有 Web 流量的缓存反向代理。他们的流量由大量客户生成的动态网站组成,通常收集静态资产。
虽然我试图喜欢 varnish(原则上我认为它有一个非常好的架构),但我在管理它和解决出现的问题时遇到了一些麻烦,所以我想知道它是否真的是正确的选择。之前我用squid做反向代理,但是作用不同,所以没有比较明确的依据。
我的问题针对在生产中部署了 varnish 或针对替代方案认真评估它的人:您是坚持使用 varnish,还是最终使用了另一个反向代理?你坚持或转换的关键点是什么,如果你确实使用了其他东西,你最终使用了什么?
我希望使用 Heartbeat/Squid/Varnish/etc 之类的东西来平衡内部 apache 实例之间的传入流量。这必须是软件而不是硬件,因为我所有的东西都在 VPS 上运行。我在这方面没有很多经验,如果我滥用术语并选择了错误的包,那么很抱歉。
我已经草拟了一些东西来说明我所追求的。绿色部分是初始设置的样子,蓝色部分是由于流量增加而添加更多 apache 实例后的样子。这可能不是这些事情的工作方式,但理想情况下,我会将平衡器的 IP 添加到域的 DNS 中。然后平衡器将查看每个 apache 实例上有多少连接(通过一些内部 IP 或永久 IP 的配置列表)并平均分配连接。蓝色部分有第二个平衡器,因为我确信在某些时候平衡器也需要帮助。
也许我正在解决这个错误,但我正在寻找关于“平衡器/s”应该是什么以及如何设置它们的最佳实践的帮助。
任何帮助都会很棒。

有人知道如何使用 Squid 来代理 Maven 存储库吗?
什么是配置文件?
主要问题是 maven 客户端发出带有控制缓存行为的标头的 HTTP 请求(我想绕过它)。
这是一个典型的请求:
GET /maven/proxy/jboss-public/org/richfaces/richfaces-bom/4.2.0.Final/richfaces-bom-4.2.0.Final.pom HTTP/1.1
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
User-Agent: Apache-Maven/3.0.4 (Java 1.6.0_26; Linux 2.6.32-38-generic)
Host: 192.168.2.171
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
我已经disk_cache proxy_http为此使用了 Apache HTTPD(并启用了模块),但我正在创建一个镜像,而不是一个代理。
这是配置(基于该站点):
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# central
ProxyPass /maven/proxy/central http://repo1.maven.org/maven2
ProxyPassReverse /maven/proxy/central http://repo1.maven.org/maven2
CacheEnable disk /maven/proxy/central
# jboss-public-repository-group
ProxyPass /maven/proxy/jboss-public http://repository.jboss.org/nexus/content/groups/public
ProxyPassReverse /maven/proxy/jboss-public http://repository.jboss.org/nexus/content/groups/public
ProxyPassReverseCookiePath /nexus /maven/proxy/jboss-public
CacheEnable disk /maven/proxy/jboss-public
# codehaus
ProxyPass …Run Code Online (Sandbox Code Playgroud) Squid'd 默认是作为 HTTP 代理运行;但是,此常见问题解答https://docstore.mik.ua/squid/FAQ-4.html#ss4.10说“将 Squid 与 socks5 一起使用无需更改。只需将通常的 -Dbind=SOCKSbind 等添加到编译行和 -lsocks 到链接行。”
这听起来很棒,除了我不知道基本语法之外我不会编写 c/c++ 代码,所以通常当我编译某些东西时,它是 ./configure 和 ./make。有时我必须修改 makefile 的编译行,但我不确定此处是否链接(尽管我了解链接的概念)。
通过“添加通常的 X 等”来准确解释要做什么也有点混乱,所以如果有人能在这里指出确切的步骤,这将是一个很大的帮助,因为它们似乎没有在任何地方详细说明。听起来并不难。
我已经为 HTTP 连接编译并正确运行了鱿鱼,但必须支持 SOCKS。
这是我的问题的一些背景:
我尝试的解决方案是在具有静态 IP 的单独服务器上使用 Squid 将代理请求从 Heroku 转发到外部服务。这样,外部服务总是看到代理服务器的静态 IP,而不是 Heroku 服务的动态 IP。
由于我的代理服务器不能依赖 IP 地址进行身份验证(这就是开始的问题!),它必须依赖用户名和密码。此外,用户名和密码不能以明文传输,因为如果攻击者要拦截明文,那么他们可以冒充我连接到我的代理,使用我代理的静态 IP 发出出站请求,从而逃避外部Web 服务的防火墙。
因此,Squid 代理必须只接受通过 HTTPS 的连接,而不是 HTTP。(与外部 Web 服务的连接可能是 HTTP 或 HTTPS。)
我在 CentOS 6.5.x 上运行 Squid 3.1.10,这是我squid.conf目前的情况。仅出于故障排除目的,我暂时启用了 HTTP 和 HTTPS 代理,但我只想使用 HTTPS。
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Example …Run Code Online (Sandbox Code Playgroud) 我尝试使用 squid 缓存从 yum 存储库获取的 rpm 包。使用以下配置,它适用于较小的 rpm,但不会缓存较大的,如 openjdk。
从日志文件(如下)来看,即使maximum_object_size 128 MB设置了它,它似乎也不会缓存大于 4MB 的文件。
任何建议可能有什么问题?
鱿鱼.conf:
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port …Run Code Online (Sandbox Code Playgroud) Squid Transparent Proxy Version: 3.3.8
OS: Ubuntu Server 14.04
Server IP: 192.168.1.3
Run Code Online (Sandbox Code Playgroud)
(不包括使用 grep 的评论)
root@ubuntu:~# grep -v '^$\|^\s*\#' /etc/squid3/squid.conf
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # …Run Code Online (Sandbox Code Playgroud) 我正在考虑在带有 SSD 驱动器的系统上设置鱿鱼(或可能是清漆)缓存。
明显的好处是这些系统具有很高的读取速度,我希望我的命中率相当高。
假设我可以将 7 个 SSD 放入 RAID 配置中。(有些情况可以让我打包更多)
实施问题:
我应该使用RAID0吗?(我希望驱动器最终会失败,所以这看起来很危险。)
我应该使用RAID10吗?(这将我的磁盘占用空间减半,这很昂贵。)
我应该使用RAID5吗?(众所周知,SSD 具有“糟糕”的写入性能和写入限制,所有额外的奇偶校验写入可能会大大减慢这一速度。)
我应该将每个磁盘视为自己的鱿鱼数据存储吗?(squid 处理多个数据存储的效果如何?如果/当一个失败时会发生什么?)
我是否应该忽略数据存储而只是将 SSD 放入大型 SWAP 分区并让 linux VM 来做这件事?(看起来很草率)
在生产环境中使用 SSD 的人们的任何建议将不胜感激。(特别是如果您将它们用于 HTTP 缓存)
我的一个朋友住在一个他们审查网站的国家,他们正在与人们用来绕过审查的技术作斗争。
他告诉我,他现在可以绕过审查的唯一方法是使用 SOCKS 代理(该国家/地区阻止了与外界的 VPN 和 SSH 连接)
我按照本教程中的步骤使用 Squid 配置了一个 Web HTTP 代理服务器:http : //www.howtoforge.com/linux_secure_browsing_squid
现在我的朋友可以更改他的 IP 地址并使用新的 IP 地址浏览网站,但他告诉我他仍然无法访问被审查的网站,因为浏览没有编码。
谁能帮助我如何将 Squid 配置为 Sock5 代理服务器?
我的服务器是 Debian 5
提前致谢。
我用谷歌搜索过,搜索过 StackOverflow 和这里。我仍然不能完全理解什么或为什么有人会使用 Squid。
到目前为止,我只能发现它是某种缓存,可以减少您的服务器(即 Apache)必须做的工作。那么有人可以确切地澄清 Squid 的作用,更重要的是,我为什么要使用 Squid?
我有一个大型社交网站,所以也许它会有益于提供图像或其他东西,我目前正在运行与 Apache 分开的 lighttpd,仅用于提供图像。