Articles of 反向代理

在向squid发送多个请求时,向后端发送一个请求,并在未命中时排队其他请求

我想保护一个后端服务器,让squid发送一个单一的请求到服务器,当一个资源caching未命中时。 在获取期间,其他请求应该被搁置,直到单个请求返回。 头文件stale-while-revalidate几乎是我想要的,但是当max-age和stale-while-revalidate都通过时,没有失效的响应,并且多个请求将被发送到后端。 指令collapsed_forwarding似乎正是我所期待的。 但是我无法按预期工作,仍然在最大时期内看到对后端的多重请求。 我正在testing这与SoapUI 5.2.1简单的负载testing与40个线程。 我目前的Squidconfiguration(3.5.19)是默认configuration,有以下更改: #Queue incomming requests when a request is send to the backend. IE collapse request into a single backend request. collapsed_forwarding on # Squid normally listens to port 3128 http_port 3128 accel no-vhost defaultsite=localhost ignore-cc #Backend requires basic auth cache_peer 127.0.0.1 parent 53142 0 no-query originserver name=myAccel login=username:password […]

使用haproxy捕获并转发扩展的PKI证书属性(例如UPN)

我试图拉相互authenticationscheme中的客户端证书属性,并将其设置为后端请求中的HTTP标头。 见下面的fig 1 。 图。1 [用户证书正确] | | 1.提供具有正常v1属性的证书 | 有额外的“扩展”属性 | 含。 包含“主题名称” | “用户主要名称”(UPN看起来像一个电子邮件地址) | [example.com:443 haproxy] –app1 / app2 CNAMEd到example.com | | 2.阅读主题备用名称 | 3.正则expression式或parsing出UPN | 4.将REMOTE_USER头设置为UPN | 5.传递给后端(S) | ┌——————┬ | | | | | | | | VV [app1svr:80] [app2svr:80] 通常,这很容易,你只需要使用内置的function就可以得到你想要的属性: 前端https 绑定*:443名称https ssl crt ./server.pem ca-file ./ca.crtvalidation必需 http-request set-header […]

尝试使用Elastic Beanstalk应用程序获得静态IP

我的目标是将Web应用程序部署到Elastic Beanstalk,并允许用户从其公司networking访问该应用程序。 他们的networking使用IP地址和IP地址范围来控制对网站的访问。 我不知道有什么方法来定义一个静态IP到EB环境。 可能吗? 我正在考虑的一种替代方法是设置在EC2实例上运行的反向代理。 该实例将被分配一个弹性IP,并且请求将被转发到EB环境。 这似乎是一个可行的方法?

NGINX Proxy和WordPress

我一直在为一个NGINX代理进行A / Btesting。 这个盒子有一个虚拟主机,用来保存企业网站,另外我添加了另外一个虚拟主机,可以将传入的stream量redirect到一个多站点的后端。 当访问者在URL的末尾添加“/ es /”时,应该被redirect到一个WordPress后端。 唯一的办法,我发现这样做,是使用“返回301 http://en.wp.example.com/ ”,但它覆盖域和所有站点链接指向wordpress。 所以这是错的。 使用proxy_pass指令看起来是最好的select,但我发现我的wordpressconfiguration和连接到数据库(我得到“错误build立数据库连接”)的麻烦,我一直想找出问题留在哪里,它在“Header $ host”指令上。 server { listen 80; server_name www.stg.example.com; location /en/ { proxy_pass http://en.wp.stg.example.com/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off; } 我想覆盖的地址,并避免链接的URLredirect,但是当我尝试使用这种格式,一些图像显示中断。 一个想法是将主机头设置为“www.stg.example.com”,但是它自动redirect到这个相同的虚拟主机,给我一个空的页面。 我需要在URL的末尾添加/ en /并使用www.stg.example.com伪装WP后端地址。 任何想法?

具有多个SSL证书的Squid反向代理通过SNI

鱿鱼代理服务器提供的可能性,以提供多个SSL证书? 我有一个服务器与各种虚拟机运行Apache Web服务器为不同的客户。 作为向客户销售一个专用IP地址的经济替代scheme,我希望至less(解释和给出)在服务器机器的共享IP上使用sni的解决scheme。 假设我们有一个带有4个域的服务器: domain1a.com , domain1b.com , domain2a.com和domain2b.com 。 域domaina1.com和domainb1.com由虚拟机中的同一个Apache实例托pipe,其他两个域也是如此。 每个虚拟机都有一个NAT转换的本地IPv4 IP地址,请求应该发送到该地址。 所有HTTP(S)请求都将通过caching代理服务器来加速和共享服务器IP。 因此,解决scheme应该提供SSL终止和SNI。 早在2013年,对这个问题的回答就指出了乌贼不具备SNI的能力。 不过,由于Squid 3.5支持SNI, 据我了解,我用Squid的选项是 使用自签名的CA和dynamic证书生成 ,或者 使用具有多个SAN名称的证书,列出(物理)服务器上托pipe的所有域。 (1)显然不起作用,因为我们无法在每个网站访问者的电脑上安装自签名的CA证书(谢天谢地!)。 (2)对我不起作用,因为它非常不灵活,并且显示(物理)服务器机器上托pipe的每个域。 我在这里错过了什么吗? 我可以为SNI提供多个SSL证书吗? 如果这是不可能的:什么替代scheme将符合我的情况? 提前致谢!

Nginx代理服务器通行证,并从URL中删除.php扩展名

我试图Proxy Pass /do/uploads.php?id=xxx Proxy Pass /do/upload?id=xxx在Nginx 这是我的尝试 location /do { rewrite /do/uploads\.php /do/uploads$1 break; proxy_pass http://domain/do; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; }

清漆不能与最后修改

我是新的清漆,并扭转一般的代理。 我在一个像博客那样工作的应用程序中testingVarnish,在这个应用程序中,我有一个“updated_at”的页面,一旦页面更新,这个页面就会改变。 因此,我决定我的caching策略应该基于最后修改的标题。 原因是用户希望在后台修改页面后立即看到更改。 除此之外,我明白我可以添加一个s-maxage与必须重新validationcaching控制,所以如果最后修改没有改变光油甚至不会尝试提出新的要求。 我也为浏览器添加了一个expire,所以会有一个客户端caching。 因此,浏览器甚至不会要求清漆再次向Apache发出请求。 但是,我注意到,caching控制s-maxage优先于最后修改,即使使用must-revalidate。 而且,即使我不添加caching控制,“最后修改”也不起作用。 清漆使用默认的ttl,没有任何反应。 我究竟做错了什么? 我正在使用Symfony,这是头文件: $response = new Response(); $response->setPublic(); // expiration model for the browser cache (EXPIRE) // the browser will only make a new request to Varnish again after ten minutes (600 seconds) $date = new \DateTime(); $date->modify('+600 seconds'); $response->setExpires($date); // expiration model for Varnish (CACHE-CONTROL) […]

如何configurationHAProxy作为反向代理?

我有多个Web服务器,托pipe多个域。 偶尔,我需要将一个域名从一个networking服务器移到另一个。 而不是必须更新域指向新的服务器位置的DNS,我想设置所有域指向一个反向代理(?),然后将Web请求传递到正确的服务器。 我正在尝试使用haproxy来实现这一点,没有太多的成功。 举个例子: 有两个服务器,web1.foo.com和web2.foo.com。 web1为abc.com和def.com服务网站。 web2为cba.com和fed.com提供网站服务。 还有一个代理服务器proxy.foo.com。 abc.com的dns等指向proxy.foo.com,它被configuration为将域映射到服务器,如下所示: abc.com – > web1.foo.com def.com – > web1.foo.com cba.com – > web2.foo.com fed.com – > web2.foo.com 问题是,我不能得到它使用haproxy工作…它试图负载平衡,而不是反向代理…如果我去abc.com,它将循环之间的web1和web2。 所以,我想我想知道,这是甚至可能与haproxy,如果是的话,我在哪里出错的configuration? 我的configuration如下所示: global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # […]

我怎样才能得到上游服务器的价值在Nginx反向代理configuration

我正在处理nginx反向代理和负载平衡configuration,这是configuration。 后端我离开heroku。 是否有可能从上游部分获取服务器值,并使用服务器部分中的值来设置标题? upstream backend { server myapp1.herokuapp.com; server myapp2.herokuapp.com;} server { listen 80; if(condition1){ set $len_host "myapp1.heroku.com"; } if(condition2){ set $len_host "myapp2.heroku.com"; } location / { proxy_pass http://backend; proxy_set_header Host $len_host; #proxy_set_header Host myapp1.herokuapp.com; } } 我想dynamic地获取哪个上游服务器正在使用,并将该服务器设置为标题。 你们有什么想法如何设置? 我必须使用这种方法的原因是因为如果我只使用 proxy_pass backend; 它返回heroku没有这样的应用程序错误,如果我改变 upstream backend { server www.google.com; } 它会返回谷歌的404页面。 但是我发现如果我可以在服务器部分设置标题,就像 proxy_set_header Host myapp1.herokuapp.com; 可以findmyapp1服务器。 […]

在服务器B(服务器B)上完成一项工作后,NGINX代理服务器能否将请求传递给(服务器A)?

目前,客户端正在将数据上传到旧的Web服务器,但我们希望客户端开始将数据上传到新的服务器。 但是,我们希望当前上传到旧的服务器继续,而新的上传通过新的服务器。 所有上传到旧服务器完成后,我们希望所有新的请求去新的服务器。 我想知道这是否可以用NGINX代理来完成? 代理也应该能够处理networking套接字。 可能的想法: 一个命令(或函数),将切换代理服务器,而不重新启动代理,并且是特定于连接。 configuration中的条件将告诉代理在旧服务器上完成作业后将请求传递到新服务器。