Слишком много перенаправить nginx и лак - PullRequest
0 голосов
/ 25 октября 2018

Я использую лак кеш-сервер с nginx .Я пытался перенаправить с http на https.Я написал конфигурацию для перенаправления http на https на сервере лака.

default.vcl

 sub vcl_recv {
    if (client.ip != "127.0.0.1" && req.http.host ~ "groundforce.cloud") {
      set req.http.x-redir = "https://groundforce.cloud" + req.url;
      return(synth(850, ""));
    }
   }
sub vcl_synth {
 if (resp.status == 850) {
     set resp.http.Location = req.http.x-redir;
     set resp.status = 302;
     return (deliver);
 }
}

Мой файл конфигурации nginx:

server {
   listen  443 ssl;
   listen  [::]:443 ssl;
   server_name  my_server;
   port_in_redirect off;

   ssl                  on;
   ssl_certificate      /etc/ssl/my_server.crt;
   ssl_certificate_key  /etc/ssl/my_server.key;

   ssl_session_cache   shared:SSL:20m;
   ssl_session_timeout 60m;

   add_header Strict-Transport-Security "max-age=31536000";
   add_header X-Content-Type-Options nosniff;

   location / {
     proxy_pass http://127.0.0.1:80;
     proxy_set_header Host $http_host;
     proxy_set_header X-Forwarded-Host $http_host;
     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 https;
     proxy_set_header HTTPS "on";
     }
}

server {
   listen 8080;
   listen [::]:8080;
   server_name  my_server;
   root /var/www/html;
   index index.php;
   port_in_redirect off;

   location / {
      try_files $uri $uri/ /index.php?$args;
   }

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       include fastcgi_params;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param HTTPS on;
       fastcgi_pass unix:/var/run/php7.0-fpm.sock;
   }
}

Примечание. Я удалил приведенный выше код default.vcl, после чего http и https работают нормально.Я следовал следующей статье .

1 Ответ

0 голосов
/ 29 октября 2018

Соответствующая информация: https://info.varnish -software.com / blog / rewriting-urls-with-varnish-redirection (т. Е. Используйте протокол PROXY, если можете, принесите поддерживает его.

Это похоже на бесконечный цикл, возможно, потому что запросы, поступающие от nginx, не приходят точно из 127.0.0.1, и поэтому client.ip != "127.0.0.1" имеет значение true.

Попробуйте либо посмотреть varnishlog, чтобы увидеть, что client.ip на самом деле, или просто добавьте его в заголовок ответа в vcl_synth и проверьте его значение с помощью curl -v https://groundforce.cloud/ (или, конечно, всего, что вам удобно.

...