ワニスの前にnginxを配置したいのですが、同時にnginxに戻ってPHP(Drupal)を提供します。
しかし、応答が200で、長さが0の空白ページ(Varnishから)しか取得していません。Varnishを再起動した後の最初のアクセスのみが機能しますが、その後は常に空白ページになります。
これは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実行バックエンドを(Nginx:nginx-> varnish-> Apacheではなく)Apache + php-fpmに設定すると、正しく機能します(php実行者がHHVMの場合でも同じ問題が発生しますが、別の問題になる可能性があります) )。
編集:申し訳ありませんが、それは間違っていました。Apacheを使用する場合、drupalのデフォルトキャッシュ(認証されていないユーザーのキャッシュページ)のチェックを外した場合にのみ機能します。 nginxでは、これは問題ではなく、このチェックボックスに関係なく機能することはありません。
私を導くことができる何かを知っている人はいますか?
だから誰かが答えてくれることを願っていますが、それまでの間、私はそれを機能させたので、その方法を説明します:
サーバー部分のポート80のnginxconfig。ユーザーが最初にアクセスするものに、次を追加します。
proxy_http_version 1.1;
ワニスのログを見てみましょう。nginxからのリクエストの小さな違いの1つ-空白のページ-:
ReqProtocol HTTP/1.0
そして、ワニスのポート(例:mypage:6081)にアクセスしているWebブラウザから直接来たものは次のとおりです。
ReqProtocol HTTP/1.1
だから私はnginxに1.1を使用するように強制しました、そして今それは動作します。