我正在为反向代理进行configuration,目的只是在两台上游服务器之间负载均衡请求,主要是为了在发生故障时进行冗余。 我很好奇这里描述的proxy_buffering的影响。 我是大型video文件的负载平衡请求,其中video的最大和最常见的“块”大约是2.5兆字节。 我们的CDN使用字节划分来请求这些video。 video文件比这个大得多。 proxy_buffering的默认值是已启用。 我的问题是: nginxcaching来自代理服务器的响应有什么好处? 它必须有一定的价值,如果(a)它是一个选项和(b)默认打开。 在我的情况下禁用它有意义吗? 请求的数据通常相当大?
我想使用NGINx作为反向代理服务器,所以我可以从中国大陆打开我的GAE(谷歌应用程序引擎)网站,因为大部分谷歌IP被GFW阻止。 DNS:我有这些DNSlogging: – A mydomain.com ==> xxxx CNAME www ==> ghs.google.com CNAME * ==> ghs.google.com 我打算使用地理DNS指向我的反向代理,以防万一来自中国大陆的请求,目前我通过将主机logging点mydomain.com本地进行本地testing。 我在Ubuntu 12.04上有nginx 1.1.19。 我的网站configuration文件是: server { #listen 80; listen 443 ssl; server_name mydomain.com; ssl on; ssl_certificate /home/user/Desktop/ssl/mydomain.com.pem; ssl_certificate_key /home/user/Desktop/ssl/mydomain.com.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; ssl_prefer_server_ciphers on; large_client_header_buffers 4 16k; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # keepalive_timeout 70; location […]
我们有一个作为负载均衡器的nginx(OpenResty 1.4.2.7)实例。 它有两个服务器指令,一个服务于一个特定的站点(让我们称之为www.our-special-host.com)和一个通配符。 我们正在尝试对其进行configuration,以便显示不同的502错误页面,具体取决于两个服务器伪指令的后端是closures的。 我们的configuration适用于HTTP,但不适用于HTTPS。 如果我们closures后端并打到www.our-special-host.com,我们会得到适当的HTTP和HTTPS错误。 但是,如果我们点击了其他托pipe站点,则会得到HTTP的正确错误页面,但对于HTTPS,我们会获得www.our-special-host.com的错误页面。 这里是我们的configuration(轻度编辑): server { server_name www.our-special-host.com listen 80; listen 443 ssl; error_page 502 /nginx_errors/loadbalancer_502_on_special_host.html; location /nginx_errors/ { alias /path/to/nginx_errors/; } location / { proxy_pass xxxx; … } ssl_certificate certificate.crt; ssl_certificate_key pk.key; } server { listen 80; listen 443 ssl; error_page 502 /nginx_errors/loadbalancer_502_on_other_hosts.html; location /nginx_errors/ { alias /path/to/nginx_errors/; } location […]
我是Squid和iptables的新手,正在调查他们是否能够做到 完成一项任务。 我的squid.conf的一部分: acl wf myport 8010 acl vp myport 8020 acl ss myport 8030 cache_peer IP1 parent 80 0 no-query originserver name=wflocal cache_peer_access wflocal allow wf cache_peer IP2 parent 80 0 no-query originserver name=vplocal cache_peer_access vplocal allow vp cache_peer IP3 parent 80 0 no-query originserver name=sslocal cache_peer_access sslocal allow ss cache_peer_access sslocal deny all […]
我以前从来没有做过如此雄心勃勃的事情,所以请让我知道这是不是一个好主意,我应该考虑替代解决scheme。 所以我有三个服务器(以及更多),所有托pipe站点具有相同的TLD。 现在,我无法链接一个子域和一个服务器。 (由于不同的订阅级别和预期的性能等,有多个服务器) 我的理想情况是这样的:所有networkingstream量都会打印一个清漆caching,而清漆会从任何一台服务器托pipe该网站caching。 我可以使用Apache或Nginx的Web服务器,以较为方便。 在networking节点上总会有新的网站被创build,所以我想让我的Varnishcaching知道哪个网站在哪里,而不必手动input。 (所有的服务器都在Debian上。) 我一直在考虑这个Puppetmaster,但我找不到任何文件(也许我正在寻找错误的东西?)。 我也一直在考虑一个自定义的守护进程,但这似乎是重新发明轮子。 如果更方便,我可以使用Nginx作为caching代理,Varnish在这个用例中似乎更受欢迎。 谢谢
我使用nginx作为反向代理从memcached中查找html内容(如果不存在),那么node.js(如果没有的话),node.js返回404.我想要做的是拦截并提供一个自定义由node.js返回的404页面 问题是,nginx不会返回正确的404.html,而是它的默认值。 所以,虽然我可以截获404页面,但nginx却传递了默认的错误页面,而不是404.html upstream memcached { server 127.0.0.1:11211; } error_page 404 /404.html; location /404.html { internal; } location @memcached { … if ($memcached_request = 1) { memcached_pass memcached; error_page 404 502 504 = @nodejs; } if ($memcached_request = 0) { error_page 404 502 504 = @nodejs; } } location @nodejs { proxy_pass http://127.0.0.1:7777; … error_page […]
我觉得我一定是错过了一些明显的东西…但是这里就是这样。 题 是否可以configuration一个Nginx的代理,使其不会修改HTTP请求的URI? 怎么样? 背景 我有一个Nginx反向代理(A)在转发代理(B)的前面。 在A的configuration是一个简单的香草反向代理设置,看起来像这样: upstream upstreamproxy { server 192.168.0.69:80; } location / { proxy_set_header Host $http_host; proxy_pass http://upstreamproxy; proxy_redirect off; proxy_buffering off; } 转发代理B也是普通的香草,所以期待看到这样的代理请求: GET http://www.example.com/foo HTTP/1.1 User-Agent: curl/7.30.0 Host: www.example.com Accept: */* Proxy-Connection: Keep-Alive 问题是,反向代理A重写HTTP请求URI如下所示: 发出示例请求: my-client$ curl –proxy http://<proxy-A IP address>:80 http://www.example.com/foo 看看代理A正在做什么: proxy-A$ ngrep -W byline tcp and port […]
当尝试使用mod_substitute和mod_filterreplace来自文本内容types的内容时,它不适用于反向代理configuration。 <virtualhost *:80> ServerName rp ProxyRequests Off ProxyPreserveHost Off <Location /> ProxyPass http://site/ ProxyPassReverse http://site/ FilterDeclare replace FilterProvider replace SUBSTITUTE resp=Content-Type $text/ FilterProtocol replace "change=yes proxy=transform cache=no" FilterChain +replace FilterTrace replace 1 Substitute "s/foo/bar/in" </Location> </virtualhost> 请求标题看起来像 Host: site Cache-Control: max-age=0 Accept: image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36 […]
我正在使用nginx将多个域映射到谷歌应用程序引擎。 在这个特定的情况下,我将多个域映射到同一个租户 。 在我的代码中有一个configuration知道哪个域是主域,当请求进来我检查主机是否是主域,如果不是我redirect到主域。 例如,假设www.aaa.com是默认设置的域 aaa.com -> www.aaa.com www.bbb.com -> www.aaa.com ccc.com -> www.aaa.com … 偶尔随机发生的事情是JavaScripturl进入nginx的redirect循环。 请注意,请求不会触及appengine。 nginx正在创build这个302 Found循环。 这在过去两周里发生了两次。 请求path类似于www.aaa.com/22/foobar.js ,其中path的第一部分是JavaScript文件的版本号。 具有相同uri格式的css文件www.aaa.com/22/foobar.css不会有这个redirect循环。 如果我部署新版本,文件将再次正确服务。 所以部署一个版本23和访问www.aaa.com/23/foobar.js将再次工作。 另外如果我使用像www.aaa.com/22/foobar.js?345重新启动nginx请求caching或甚至重新启动nginx运行的机器没有帮助。 build立一个具有相同的确切configuration的新机器没有问题的文件服务。 那么可能会导致这个redirect循环? 一旦发生,我怎么能摆脱它? 有没有在Nginx的caching(我知道Nginx默认情况下不caching)我不知道? 该机器可能caching这些redirect? 这里是我的nginx.conf user nginx; worker_processes 2; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server_names_hash_max_size 1024; server_names_hash_bucket_size 128; […]
在通过https服务器通过Apache服务器反向代理将文件发布到Tomcat servlet时,我们突然看到一个间歇性的,但非常频繁的错误。 该错误似乎只在发布20 MB或更多(video)的文件时发生。 我们还没有看到2到5 MB(JPEG)的较小文件的问题。 在我们尝试过的五台服务器中,有两台发生错误。 在连接的服务器端,即使用Jersey创build的Tomcat servlet,我们得到: java.net.SocketException: Connection reset 作为反向代理的同一台计算机上的Apache服务器提供了以下错误消息: [Thu May 15 17:08:58 2014] [error] proxy: pass request body failed to 127.0.0.1:8080 (localhost) from 192.168.16.xx () 设置Apache服务器的日志级别来debugging和重现问题不会产生额外的信息 – 我们仍然得到相同的错误消息,没有任何关联的消息。 less一些,我们没有在Tomcat方面得到例外,但是检查传输的字节数量与Content-Length头部相比,并不是所有的东西都能完成。 第二种情况下,Apache Server中的错误与第一个“proxy:pass request body failed …”中的错误相同。 在一个服务器上的Apache服务器版本是2.2.15.29,另一个是在CentOS 6.2下运行的2.2.15.30。 反向代理规则是这样设置的: <IfModule mod_proxy.c> ProxyRequests Off # Case Manager Tomcat web service ProxyPass /casemanager […]