我正在使用Stunnel,Varnish和nginx与nodejs应用程序,并且在将非https页面( http://manager.domain.com )redirect到它们各自的https页面( https://manager.domain。 com )。 我只是卡在一个redirect循环,因为所有的stream量首先通过清漆。 这个设置的主要原因是使用ssl的套接字。 Stunnel侦听端口443.它终止SSL连接,并将stream量传递给端口80上的Varnish。Varnish侦听端口80,并根据需要拆分81上的Nginx和3000上的Node.js之间的其他stream量.Nginx侦听端口81.它服务静态文件和其他非Node.js页面。 这里是nginx conf文件 upstream nodejs { server 127.0.0.1:3000; server 127.0.0.1:3000; } server { listen 81; server_name www.domain.net; rewrite ^(.*) http://domain.com$1 permanent; } server { listen 81; server_name manager.domain.com; rewrite ^(.*) https://manager.domain.com$1 permanent; } server { listen 81; server_name domain.com manager.domain.com help.domain.com; access_log /srv/www/domain.com/logs/access.log timed; error_log /srv/www/domain.com/logs/error.log info; […]
在安装mod_rpaf之后,我按如下方式设置我的configuration文件(/etc/apache2/mods-available/rpaf.conf): <IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 RPAFheader X-Real-IP </IfModule> 但是,现在当我重新启动apache2我得到一个错误: 命令'RPAFheader'无效,可能是拼写错误或由未包含在服务器configuration中的模块定义的 删除RPAFheader线解决了这个问题,但我真的需要这个设置。 有没有人有任何想法?
我试图添加一些从旧域redirect到新的域名,我已经在我的虚拟主机文件中使用简单的301redirect,如: <VirtualHost *:8080> ServerName olddomain.com ServerAlias www.olddomain.com Redirect 301 / http://www.newdomain.com/ </VirtualHost> 然而,这是不工作在我的虚拟主机文件,我认为是因为在Apache前面运行Varnish服务器,但不知道如何解决它。 主站点在同一个虚拟主机文件中使用相同的端口,例如: <VirtualHost *:8080> ServerName www.newdomain.com … </VirtualHost> 我错过了什么? 我已经尝试使用清漆configuration文件来添加redirect在那里,但遇到问题 – 是最好的select?
我正在使用3个具有多个域(站点)的nginx服务器。 每个服务器包含多个Wordpress网站。 可以configurationVarnish并使用单独的后端(不同的IP),每个后端都有多个域(站点)? 我已经尝试configurationVarnish并使用多个后端,但问题是Server-2和Server-3上的域(站点)路由不正确。 Frontpage显示,但子页面被路由到Server-1。 我正在使用Varnish 4和这个模板进行了一些修改。 https://github.com/mattiasgeniar/varnish-4.0-configuration-templates/blob/master/default.vcl 不知道是否round_robin是正确的解决scheme,因为我认为这是同步服务器相同。 configurationVarnish 4并且只有1个后端服务器工作。 但是,多个后端服务器和域失败… 提前致谢!
我不是很熟悉使用nginx或varnish,但这是我目前的设置。 我有一个node.js服务器正在运行json,html模板或socket.io事件。 然后我有nginx运行在服务所有静态内容(CSS,JS等)的节点前面。 在这一点上,我想将静态内容和dynamic内容都caching到内存中。 这是我的理解,清漆可以caching静态内容相当好,它不会需要触摸我的应用程序代码。 我也认为它也可以cachingdynamic内容,但不能有任何cookie头? 目前我使用redis来保存会话数据,并计划在将来使用它来处理其他事情,比如logging非关键但有趣的统计信息。 我只是不知道我应该如何caching网站上的所有内容。 我认为这归结于这些select,但可能会有更多: 抛出nginx前的清漆,让清漆caching静态页面,没有应用程序代码的变化。 Redis会cachingdynamic数据库调用,这将需要修改我的应用程序代码。 完全忽略使用清漆并让redis处理caching所有内容,然后使用其中一个nginx-redis模块。 我不确定这是否需要大量的应用程序代码更改(对于静态文件)。 我没有find比较nginx + varnish vs nginx + redis的基准,我也没有经验来自己动手(我的configuration可能性很高)。 我基本上正在寻找在req / sec方面最高效的解决scheme,并且在将来可以扩展(在问题中抛出新的硬件+也许可以在configuration=新服务器上调整一些值,并且无痛地运行) 。
我有一个nginx反向代理服务器,与apache后端进入清漆caching。 这个php作为一个从apache开始的fastcgi进程运行。 我试图让一些PHP软件工作,但基本的HTTP身份validation对话框不接受任何用户名或密码。 我做了一些挖掘,并想出了这个.htaccess文件: RewriteEngine On RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization},L] 这已经解决了基本HTTPauthentication的authentication问题。 现在我一直在试图弄清楚到底做了什么,所以我的问题是:为什么添加这个重写规则使authentication开始工作? 我现在所能想到的就是在nginx – > varnish – > apache链的某个地方,apache没有收到auth头文件。 我想了解这里发生了什么事情,所以我可以在服务器级别实施更改,以防止其他地方发生。 有人可以澄清? 谢谢
在这种情况下,有一个服务器运行一些网站的清漆服务也configuration好。 现在,在另一台服务器上,我在LAMP环境+ W3TC Cache + APC中运行了2个wp多站点,现在我想configuration我的第一台服务器作为它的反向代理。 我想知道这是否会做到这一点: acl whitelist { "localhost"; "127.0.0.1"; "ip server with varnish"; "ip wordpress server"; } sub vcl_recv { if ( ! client.ip ~ whitelist) { error 403 "Access denied"; } 在开始testing之前,由于我对Varnish的使用经验不多,我想听听你对于设置我的服务器VCL的ACL的意见,以允许来自外部服务器的请求 UPDATE 只要指出,Apache响应8080端口和清漆80。 默认/清漆 DAEMON_OPTS="-a ip-server-1:80 \ -T localhost:6082 \ -f /etc/varnish/main.vcl \ -S /etc/varnish/secret \ -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
试过这个VCL ,但它不工作: backend nginx { .host = "/path/to/.s.NGINX"; }
如何强制PHP读取SERVER_PORT为80,当Apache侦听8080和清漆听80? 如果我的apache虚拟主机设置为8080,SERVER_PORT将始终为8080,这让我感到困扰,因为在应用程序的许多部分,有些链接是通过SERVER_NAME和SERVER_PORT一起计算的,所以我需要的是“相信” SERVER_PORT是80,所以所有的链接都会通过清漆
我已经把varnish设置为代理,将HTTP请求redirect到运行apache的后端服务器。 我希望在我的Apache日志,而不是清漆服务器IP地址的客户端IP地址。 这是我的清漆configuration文件: backend $my_backend { .host = "192.168.0.103"; .port = "80"; } sub vcl_recv { } else if (req.http.host == "$my_domain_name") { set req.backend = $my_backend; if (req.request == "POST") { if (req.http.X-Forwarded-For) { set req.http.X-Real-Forwarded-For = req.http.X-Forwarded-For ", " regsub(client.ip, ":.*", ""); unset req.http.X-Forwarded-For; } else { # Simply use the client IP […]