Articles of 清漆

扩展大文件下载?

我们目前通过一台Apache服务器提供大容量(1GB +)的文件,但是我们的Apache服务器非常受磁盘IO限制,我们需要扩展。 我的第一个想法是简单地复制这个Apache服务器,但是我们的文件库太大了,不能简单地横向扩展Apache服务器N次。 所以我的下一个想法是在后端有两个Apaches(高可用性),每个都有一个单独的我们整个库的副本。然后在前面的“N”反向代理,其中“N”随着我们的交付需求增长而增长。 每个反向代理的内存很大,每个GB的主轴数量尽可能多。 后端的Apache服务器更“档案化”,主轴到GB低。 这是一个很好的build筑吗? 有更好的方法来处理它吗?

使用切诺基而不是nginx在光油前获得HTTP 1.1优化?

我们一直在运行nginx – > uWSGI,现在我们正在评估将Varnish作为nginx和uWSGI之间的caching层(类似于http://www.heroku.com/how/architecture )。 但是,nginx只支持HTTP 1.0,所以它将不得不为每个请求创build与Varnish的新连接。 许多人build议在Varnish前面运行nginx,但是使用Cherokee之类的东西不是更有意义,因为它支持后面的HTTP 1.1,所以消除了HTTP连接的开销?

添加一个反向代理 – nginx或varnish

目前,我们通过Apache和Apache客户服务大部分Rails和LAMP应用程序,但是我们正在考虑添加Nginx或Varnish作为反向代理来减less服务器的负载。 我知道你可以一起使用Varnish和Nginx,但是鉴于在学习两者如何工作方面有时间投入,并且尽可能地保持尽可能低的基础设施中“移动部分”的数量,试图找出使用之间的优点和缺点: nginx本身就是一个反向的反向代理/caching 作为反向代理/caching单独的清​​漆 nginx和清漆一起 据我所知,nginx速度非常快,而且随着HTTP服务器越来越stream行,它越来越受到人们的关注,所以我可以看到有一段时间来学习这个服务器的工作原理,但是Varnish仍然是一个未知的我。 如果nCache现在在Nginx中,为什么要使用Varnish? 谢谢

木偶:如何在程序包升级过程中跳过重启,直到configuration被replace?

我试图让Puppet升级我们的Varnish 3服务器到Varnish 4,这是一个重要的更新,需要一个更新的configuration文件,否则将无法启动。 这是在Ubuntu 12.04上。 Varnish模块基本上是由这些类和依赖项构build的: Class['varnish::repo'] -> Class['varnish::install'] -> Class['varnish::tools'] -> Class['varnish::config'] ~> Class['varnish::service'] 我已经更新了varnish::repo的Apt-repo URL,在varnish::install设置ensure=>latest ,并向varnish::config提供了一个更新的configuration文件。 到现在为止还挺好。 当Puppet运行这些依赖关系时,在varnish::install阶段运行失败,因为Apt尝试在升级后立即重启Varnish守护进程,而不是让Puppet有机会replaceconfiguration文件。 varnish::install类中的失败会导致依赖关系链中断,并导致其余的类也失败。 结果是需要手动恢复的一个损坏的Varnish安装。 你怎么处理这个? 我想过使用policy-rc.d ,它基本上告诉Apt不要执行自动停止和服务启动。 我试图在升级之前创build文件,然后将其删除。 file {'/usr/sbin/policy-rc.d': ensure => $ensure, content => "#!/bin/sh\nexit 101", owner => 'root', group => 'root', mode => '0755', } 当然创build和删除是一个问题,因为Puppet把这看作是一个重复的资源。 为什么我想再次删除策略,只需要安装它,你问? 因为我们使用unattended-upgrades来执行较小的安全升级,我想在这种情况下允许自动服务重新启动,而不是在这种情况下。 此外,policy-rc.d会影响所有的服务,而不仅仅是Varnish。 也许我正在考虑这个错误,但我可以告诉Puppet或Apt等待重启,直到configuration文件被replace?

如何增加清漆吞吐量?

有时在繁忙的Pressflow网站上,我注意到未authentication的用户超时,而服务器的端口远未饱和,有大量未使用的内存,服务器负载很低。 除此之外,自从我转移到采用新configuration的新的Varnish驱动的服务器以来,该网站的带宽使用量下降了大约30%。 所以我怀疑这个下降可能是因为Varnish的错误configuration。 这里有一些相关的参数: DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -b localhost:8080 \ -u varnish -g varnish \ -S /etc/varnish/secret \ -p thread_pools=14 \ -p thread_pool_min=200 \ -p thread_pool_max=5000 \ -p listen_depth=128 \ -p thread_pool_add_delay=2\ -p lru_interval=20 \ -h classic,72227 \ -p session_linger=120 \ -p sess_workspace=32768 \ -p connect_timeout=600 \ -s malloc,15G" #这里是varnishstat的最新输出: 1+21:07:54 Hitrate […]

清漆configuration只caching未login的用户

我有一个由varnish + nginx向前的Ruby on Rails应用程序。 由于大多数网站的内容是静态的,除非你是一个login用户,我想在用户注销时大量使用varnish,而只是在login时caching静态资产。 当用户login时,他们的cookie中会包含cookie'user_credentials',此外,我需要跳过/ login和/ sessions上的caching,以便用户可以首先获得他们的'user_credentials'cookie 。 Rails默认不设置caching友好的caching控制头,但是当用户没有login时,我的应用程序设置了“public,s-max-age = 60”头。Nginx设置为返回'far future'expires头为所有静态资产。 我目前的configuration完全绕过了login时包括静态资产在内的所有内容的caching,并且在注销时返回cachingMISS。 我花了几个小时绕圈,这里是我目前的default.vcl director rails_director round-robin { { .backend = { .host = "xxx.xxx.xxx.xxx"; .port = "http"; .probe = { .url = "/lbcheck/lbuptest"; .timeout = 0.3 s; .window = 8; .threshold = 3; } } } } sub vcl_recv { if (req.url […]

如何使用Varnish VCL阻止IP地址或networking块?

如何阻止Varnish的VCL文件中的networking范围的IP地址?

在Nginx上运行PHPmyAdmin,端口8080传递到清漆不太好!

我安装了Nginx,Varnish和PHP-fpm。 然后我安装了PHPmyAdmin,并为它创build了一个虚拟主机: server{ listen 8080; server_name phpmyadmin.Domain.com; access_log /var/log/phpmyadmin.access_log; error_log /var/log/phpmyadmin.error_log; location / { root /usr/share/phpmyadmin; index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name; include /opt/nginx/conf/fastcgi_params; } } 当我去phpmyadmin.Domain.com它按预期工作! 但提交用户名/密码后,它redirect到phpmyadmin.Domain.com:8080/index.php?…与页面无法find响应以及! 我能做什么?

nginx proxy_cache:限制并行请求到后端

我使用nginx作为我的后端的反向代理。 configuration是非常基本的,例如核心只是: upstream myservice { server 127.0.0.1:80; server 123.123.123.123:80; } location / { proxy_pass http://myservice; proxy_set_header Host myservice; } 现在我的服务计算量非常大,我希望nginx将有效的并行(同时)请求的数量限制为单个上游后端,例如10。 我查看了limit_req模块,但是这个模块似乎只关注每分钟的传入请求。 我特别想限制活动后端连接的数量; 即如果请求已经返回或者不考虑。 这可能吗? 在清漆,这可以使用例如 backend cpu1 { .host = "127.0.0.1"; .port = "80"; .max_connections = 20; } 不过,我需要使用nginx这个。

阻止在nginx中redirect端口

我目前有nginx设置通过光油来提供内容。 Nginx监听端口8000,清漆将用户的请求从80连接到8000。 问题是,在某些情况下,特别是当试图访问一个目录时,比如site.com/2010会将请求redirect到site.com:8000/2010/ 。 我怎样才能防止这个?