NginX-> Varnish-> PHP-FPM空白页面

前端之家收集整理的这篇文章主要介绍了NginX-> Varnish-> PHP-FPM空白页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想把Nginx放在Varnish面前,同时它会回到Nginx来为PHP(Drupal)提供服务.

但我只得到空白页面(来自Varnish)200响应,但长度为0.只有重新启动清漆工作后的第一次访问,但随后是空白页面.

这是Nginx的配置:

server{
  listen 80; 
  server_name myserver

  access_log  /var/log/Nginx/ssl_access.log main;
  error_log   /var/log/Nginx/ssl_error.log warn;

  location / { 
    proxy_pass http://127.0.0.1:6081;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_redirect off;
  } 

然后清漆配置只是默认设置,尝试调试:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

然后再次为8080的Nginx配置是:

server{
  listen       8080; 
  access_log  /var/log/Nginx/fromvarnish.log main;
  error_log   /var/log/Nginx/fromvarnisherror.log warn;

  server_name myserver

  location / { 
    try_files $uri /index.PHP?$query_string; 
  }
  location ~ '\.PHP$|^/update.PHP' {
     include fastcgi_params;
     fastcgi_pass 127.0.0.1:9001;
     fastcgi_index index.PHP;
  }
}

访问我的网页只返回空的html但200响应.没有PHP错误或任何东西. Nginx上的访问日志只是访问,没有错误.

如果我直接从Varnish访问(我通过端口mywbpage.com:6081访问)或者如果我将它设置为端口80它可以工作.

如果我将PHP执行后端设置为Apache PHP-fpm(而不是NginxNginx-> varnish-> apache)它也可以正常工作(虽然如果PHP执行者是HHVM,但我可能会遇到同样的问题问题).

编辑:抱歉这是错误的,如果我使用apache它只有当我取消选中drupal的默认缓存(未经身份验证的用户的缓存页面)时才有效.使用Nginx无关紧要,无论使用此复选框,它都无法运行.

你们中的任何人都知道可以指导我的事情吗?

最佳答案
@H_502_42@所以我希望有人给出答案,但与此同时我做了它,所以我将解释如何:

Nginx配置在服务器部分端口80.用户将首先访问的那个,添加

proxy_http_version 1.1;

看一下清漆日志,来自Nginx -blank page-的请求之间的一点差异:

ReqProtocol HTTP/1.0

一个直接从webbrowser访问清漆端口(例如:mypage:6081) – 正确地工作 – 是:

ReqProtocol HTTP/1.1

所以我强迫Nginx使用1.1,现在它可以工作了.

原文链接:https://www.f2er.com/nginx/435377.html

猜你在找的Nginx相关文章