Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 使用清漆时重定向循环+;Nginx(HTTPS)_Wordpress_Loops_Nginx_Https_Varnish - Fatal编程技术网

Wordpress 使用清漆时重定向循环+;Nginx(HTTPS)

Wordpress 使用清漆时重定向循环+;Nginx(HTTPS),wordpress,loops,nginx,https,varnish,Wordpress,Loops,Nginx,Https,Varnish,我试图在一个使用HTTPS的WP站点中使用Varnish和Nginx 缓存的文件一切正常,但当Varnish发现不应该缓存的内容时,它会将其发送回Nginx。 此时,Nginx再次向Varnish发送HTTPS请求,导致无限循环 我尝试了很多东西,在互联网上搜索了很多次,但到目前为止没有任何效果 这是Varnish返回的一个示例: if (req.url ~ "/wp-(login|admin|cron)") { # Don't cache, pass to backend

我试图在一个使用HTTPS的WP站点中使用Varnish和Nginx

缓存的文件一切正常,但当Varnish发现不应该缓存的内容时,它会将其发送回Nginx。 此时,Nginx再次向Varnish发送HTTPS请求,导致无限循环

我尝试了很多东西,在互联网上搜索了很多次,但到目前为止没有任何效果

这是Varnish返回的一个示例:

if (req.url ~ "/wp-(login|admin|cron)") {
        # Don't cache, pass to backend
        return (pass);
}
这是Nginx定位块,它处理433:

location / {
    # Send request to varnish
    proxy_pass  http://127.0.0.1:8888;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port 443;
    proxy_set_header Host $host;
}
我猜Varnish正在使用
返回(pass)
将数据发送回Nginx,但我现在不知道如何使用另一个位置块呈现该数据

如何在Nginx中捕获来自Varnish的请求,并将其与来自常规433端口的请求区分开来


提前谢谢

我发现了问题:HHVM

我在Nginx(端口9433)上创建了另一个没有HHVM的后端,并在Varnish中执行了以下操作:

backend no_hhvm {
   .host = "127.0.0.1";
   .port = "9433";
}
然后

# Either the admin pages or the login
if (req.url ~ "/wp-(login|admin|cron)") {
        # Don't cache, pass to backend
        set req.backend = no_hhvm;
        return (pass);
}
因此,当页面未缓存时,它将转到不使用HHVM的端口9433


现在工作得很好。

这可能是因为hhvm期望通过端口443(https)发出请求,导致重定向到https,最终再次出现清漆。

尝试添加:

fastcgi_param HTTPS on;
将fastcgi_传递到php的位置块。我在这里遇到了一个确切的问题: