Nginx SSL-rewrite на localhost

Я хочу перенаправить запрос localhost на HTTPS. Вот как выглядит мой .conf:

server {
  listen 80;
  listen 443 ssl;

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

  server_name localhost;

  return 301 https://$server_name$request_uri;

  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
}

Я запускаю его в контейнере Docker с помощью -p 80:80 -p 443: 443 , но вызов сервера из браузера приводит к возникновению цикла ] https: // localhost / звонки.

0
задан 25 June 2018 в 20:41
1 ответ

Оба сервера https и http используют один и тот же блок конфигурации, который сообщает nginx о перенаправлении на https: // $ server_name $ request_uri адрес. Это причина цикла перенаправления.

Вам нужен отдельный блок server для https , где вы обслуживаете фактический контент, и у вас есть перенаправление только в http block.

В вашем случае конфигурация будет выглядеть примерно так:

server {
    listen 80;

    server_name localhost;

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;

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

    server_name localhost;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
}
3
ответ дан 4 December 2019 в 12:17

Теги

Похожие вопросы