Назад | Перейти на главную страницу

перенаправление http nginx в бесконечный цикл https

У меня есть конфигурационный файл. Это старый.

server {
      listen 80;

      server_name  .lala.mana.lan;

      access_log /var/log/nginx/lala.access.log;
      error_log  /var/log/nginx/lala.error.log;

      proxy_conect_timeout  600;
      proxy_send_timeout    600;
      proxy_read_timeout    600;
      send_timeout          600;

      location / {
        proxy_pass    http://lala
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

        proxy_redirect off;
    }

      location ~* /web/static/{
        proxy_cache_valid 200 60m;
        proxy_buffering    on;
        proxy_pass http://lala;
    }
    }

А теперь пытаюсь сделать перенаправление с одного сайта на другой с http на https. Вот мой отредактированный файл конфигурации:

server {
  listen 80;
  listen 443 ssl;

  ssl_certificate /etc/ssl/mana.crt;
  ssl_certificate_key /etc/ssl/mana.key;

  server_name  .lala.mana.lan;
  return 301
  https://lala.mana.lt$request_uri;

  access_log /var/log/nginx/lala.access.log;
  error_log  /var/log/nginx/lala.error.log;

  proxy_conect_timeout  600;
  proxy_send_timeout    600;
  proxy_read_timeout    600;
  send_timeout          600;

  location / {
    proxy_pass    http://lala
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

    proxy_redirect off;
}

  location ~* /web/static/{
    proxy_cache_valid 200 60m;
    proxy_buffering    on;
    proxy_pass http://lala;
}

client_header_buffer_size 64k;
large_client_header_buffers 4 64k;
}

У вас должны быть отдельные блоки для http и https для перенаправления от одного к другому.

Итак, ваша конфигурация должна выглядеть так:

server {
    listen 80;
    server_name lala.man.lt;

    return 301 https://lala.man.lt$request_uri;
}

server {
    listen 443 ssl;
    server_name lala.man.lt;

    ssl_certificate /etc/ssl/mana.crt;
    ssl_certificate_key /etc/ssl/mana.key;

    access_log /var/log/nginx/lala.access.log;
    error_log  /var/log/nginx/lala.error.log;

    proxy_conect_timeout  600;
    proxy_send_timeout    600;
    proxy_read_timeout    600;
    send_timeout          600;

    location / {
        proxy_pass    http://lala
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

        proxy_redirect off;
    }

    location /web/static/ {
        proxy_cache_valid 200 60m;
        proxy_buffering    on;
        proxy_pass http://lala;
    }

    client_header_buffer_size 64k;
    large_client_header_buffers 4 64k;
}

Я также починил твой /web/static блок location для использования простого сопоставления префиксов, включая совпадение регулярных выражений, не требуется.