Articles of 代理

使用SSL客户端证书转发Web服务的代理

我有很多服务器访问各种外部的Web服务,其中大部分使用SSL,其中一些需要客户端证书。 我想集中configuration客户端证书,并将表示层与底层服务器分离。 虽然我可以使用Squid代理请求,但是我从文档中看不到如何告诉Squidselect特定于目标Web服务的客户端证书。 这可能吗? 一种方法是在Squid代理之外维护一组stunnel实例,然后将客户端软件configuration为使用带URL重写器的http请求通过适当的stunnel实例路由请求,但是如果我得到XML响应引用HTTPS DTD(除非我用完整的MITM重写内容)。 还有其他解决scheme吗? 更新 将“https”重写为“http”的问题在于,它会使用http URI打破任何其他资源 – 因为协议适配器会将这些资源转换回https! 我遇到这篇文章 ,解决了向代理连接添加客户端证书的问题 – 这可能是一个解决scheme。 但是确实需要客户端被configuration为使用代理服务器,在命名事物以及如何使用分离式DNS工作方面也存在问题。 诚然,这并不是什么大问题,但是让我想到这里所描述的是大多数CDN提供商使用的模式 – 因此我目前正在考虑使用Apache Traffic Server作为中间组件 – 这允许使用分离的DNS,分离的SSL通道客户端和来源,以及与原始服务器进行通信的客户端证书。

configurationApache以使用外部代理进行HTTPS连接

我试图让我的Apache使用HTTPS请求的外部代理: Listen 80 Listen 443 .. LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so .. SSLProxyEngine On SSLProxyVerify none SSLCACertificateFile conf/cert/curl-ca-bundle.cert ProxyRemote http://*.externaldomain.com:80 http://external.proxy.com:8585 ProxyRemote http://*.externaldomain.com:443 https://external.proxy.com:8585 ProxyPass /sub https://sub.externaldomain.com/ 但对http:// localhost / sub / something的请求返回503,并给出: [Fri Apr 15 17:38:15 2011] [error] (OS 10060)A connection attempt failed because the connected party did not properly respond after a […]

将域名映射到Docker容器的最佳实践

什么被视为从一个特定的域名服务docker集装箱的“最佳做法”? 例如: Container1在端口8080上运行应用程序A,并通过AwesomeAppA.com访问 Container2在端口8090上运行App B,并通过AwesomeAppB.com进行访问 那么你可以,例如: 例如,让容器公开Gunicorn / uWSGI使用的端口,并在Docker主机上使用Nginx来处理代理。 但是你也可以让你的容器在内部运行Nginx并使用HAProxy 。 但哪个更好? 还有其他的优先select,还是真的是个人喜好? 选项1符合单一责任原则,并允许您在容器中运行您的1应用程序,并让主机处理代理。 它也允许Nginx处理SSL,但除了“docker运行”之外,还需要额外的设置和configuration。

您如何使AWS VPC EC2实例能够查看AWS API?

我们正在通过CloudFormation在AWS VPC内部架构基础架构。 我们使用自动扩展组来启动VPC-EC2实例(所以,我们不直接调用实例; ASGpipe理这些实例)。 在PVC内部,EC2实例只有一个私有IP; 没有进一步的工作,他们就无法看到外面的世界 。 当这些实例启动时,我们有一些需要与各种AWS API交谈的引导任务。 我们还有一些正在进行的任务需要AWS APIstream量。 你怎么解决这个明显的鸡蛋问题? 我们已经阅读了关于: NAT实例 – 但不喜欢这么多,因为它是我们栈的另一个层。 为每个需要谈话的VPC实例分配弹性IP,但是a)他们都这样做,b)由于我们使用的是ASG,我们不知道在规定时间哪些实例需要分配EIP,c)我们当实例被终止并被replace时,需要设置一些东西来监视这些ASG并分配EIP 将一个实例(实际上是一个负载平衡对,可能跨越AZ)旋转起来,作为所有APIstream量的AWS-API代理 我想我想知道是否有某种后门可以打开,允许我们的VPC EC2实例访问AWS API端点,但是没有其他任何事情,对于廉价复杂的设置,不会添加另一个跳转networking层到我们的服务请求的基础设施。

通过中介服务器进行远程桌面的SSH隧道第二部分

我以前问过如何使用中间服务器来configuration2个SSH隧道,以便通过它们运行远程桌面,并设法使其工作。 现在,我正在尝试使用相同的机器,但以相反的顺序。 这是设置: Windows 7个人电脑在专用networking中,坐在防火墙后面。 公共访问Linux服务器,可以访问PC。 Windows 7笔记本电脑,在家里,我想在PC上做远程桌面。 我在笔记本电脑上使用Putty来创build一个从它到Linux服务器的反向隧道: R60666 localhost:3389 。 我在PC上使用Putty来创build一个从它到Linux服务器的常规隧道: L60666 localhost:60666 。 我SSH到Linux服务器,我运行telnet localhost 60666,它似乎产生预期的输出,如我在这里收到的debugging提示中所述。 我尝试将远程桌面从PC连接到笔记本电脑: localhost:60666 。 它要求我的用户名和密码,我点击确定,它locking我的笔记本电脑上的当前会话(所以我看到在笔记本电脑上的欢迎屏幕,而不是我的桌面),它显示远程桌面屏幕上的“欢迎”消息,然后它只是黑色。 它不会断开连接,它不会提供任何错误,而且我无法在“远程桌面”屏幕中执行任何操作。 我尝试了与Windows XP笔记本电脑相同的设置,并且遇到相同的症状。 我也尝试使用不同于60666的端口,但没有任何改变。 有人知道我在做什么错吗? 更新 :正如@jwinders所指出的,我无法直接从Linux服务器运行telnet PC 3389 。 由于Windows防火墙有一个规则允许在端口3389上的所有连接,我不知道是什么阻止它。 幸运的是,我能够从Linux机器创build一个SSH隧道到PC ssh 3389:localhost:3389 'domain\user'@PC 。

在NGINX中使用Postgres Basic Auth将查询结果添加到代理HTTP头

我们正在尝试使用ngx_postgres模块通过NGINX进行基本authentication。 我们希望从查询结果对中检索一个值并将其添加到HTTP头,然后将其代理到另一个服务器。 我们已经成功通过postgres进行身份validation,但问题是已经将结果对传递给代理。 我们目前使用的代码如下: location = /test_auth { internal; postgres_escape $user $remote_user; postgres_escape $pass $remote_passwd; postgres_pass geo_database; postgres_query "select user_name,contract_id,access_token from schema_name.table_name where user_name=$user and password=md5($pass);"; postgres_rewrite no_rows 401; more_set_headers -s 401 'WWW-Authenticate: Basic realm="Restricted"'; postgres_output none; postgres_set $query_val 0 0 required; } location /test/ { auth_request /test_auth; proxy_pass http://back_end_server/public-dev/; proxy_set_header test $query_val; proxy_redirect http://back_end_server/public-dev/ […]

IIS 6.0中的HTTP压缩导致某些用户出现问题

我们正在收到一些零星的客户电话(less于我们用户的0.1%)抱怨无法访问我公司的网站 – 他们得到一个空白页面(如果他们使用IE),或“内容编码错误”说该页面使用无效或不支持的压缩forms(如果他们使用FireFox的话)。 目前的怀疑是,当一个HTTP 1.1浏览器请求通过HTTP 1.0代理发送时,我们发回了压缩的HTTP 1.1浏览器请求,这个请求在某种程度上被HTTP 1.0代理所破坏。 该网站是一个Tomcat 4.2.2后端,在IIS服务器上启用了GZIP和DEFLATE的IIS 6.0前端。 有没有人遇到过这种错误? 有没有一个build议的修复,以避免破坏旧的代理实现? 编辑:我们可以用squid-2.5的默认设置复制这个问题,然而新版本的squid似乎工作得很好。

鱿鱼3重新加载,使其停止服务请求

因此,我们在这里使用Squid 3(3.0.STABLE8-3 + lenny4),非常标准的configuration(没有dansguardian或类似的)+带有LDAP背景的NTLM身份validation,在忙碌的一天大约有1000个用户,我们的acls引用了一些外部文件/阻止的网站/ IP地址)。 在Squid 2.X上,我们曾经能够重新加载它的configuration(要添加或地址或规则的地址等),并在重新加载期间鱿鱼不会停止服务。 由于我们改为3.0,这似乎是不可能的:每次我们使用重新加载(或-k重新configuration)它停止服务请求长达2分钟,并且客户端接收configuration代理不接受连接消息。 我检查了文档,并没有得到任何关于它,是否有其他人遭受这个问题,或者是我的设置上的一个孤立的情况? 另外,如果你有Squid 3.0并且不会遇到这个问题,你的squid是如何configuration的?

限制Squid中每个IP地址的带宽

我正在安装Squid 3.1.18。 我想限制任何IP可以使用的最大带宽为128 Kbps。 是否有可能使用鱿鱼? 我不使用鱿鱼authentication,所以识别用户和设置限制不是一个选项。 需要一些方法来限制连接到鱿鱼访问Web的本地IP地址。

在移动设备上validation用户到代理的最佳方式

例如,在Forefront TMG中,我可以在DNS中有一个wpad条目,计算机发现它并自动configurationnetworking代理。 当用户试图去互联网时,他被迅速提供的crendentials。 在iPhone或iPad中,它不起作用。 你推荐的方式是实现一个适用于移动设备的身份validation代理?