Nginx не перенаправляет, но работает

Это моя первая установка с nginx, и я использую ее для прокси на nodejs. HTTP находится на порту 3000, а HTTPS на порту 3001.

Если я захожу на http://test.domain.com/ он загружает обычные незащищенные страницы. Если я захожу на https://test.domain.com/ он загружает защищенные страницы. Но я хочу, чтобы он перенаправлял с не-https на https.

Что не так с моим конфигом? Это весь файл domain.conf, который я использую.

server {
    listen 80;
    server_name test.domain.com
    return 301 https://test.domain.com$request_uri;
}

server {
    listen 443 ssl;

    server_name test.domain.com;

    ssl_certificate /etc/nginx/ssl/domain.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

   location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header HOST $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass https://127.0.0.1:3001;
      proxy_redirect off;
   }
}

Я перезапустил nginx несколько раз.

Спасибо!

3 ответа

Вы можете использовать переписать в своем блоке http-сервера

server {
    listen 80;
    server_name test.domain.com;
    rewrite ^ https://$server_name$request_uri? permanent;
}

Отсутствует ";" в конце строки. (или просто битая копия / вставка?)

    server_name test.domain.com;

Я думаю, у вас есть другой server_block, работающий на сервере по умолчанию, который переопределяет этот без действительного имени сервера

Подсказки:

  1. Если вы хотите перехватить все http-запросы одним глобальным блоком сервера, используйте default_server:

    listen 80 default_server;
    
  2. Вы можете использовать больше переменных;)

    return 301 https://test.domain.com$request_uri;
    

    в

    return 301 https://$host$request_uri;
    

    Не используйте перезапись, возврат самый быстрый.

Добавьте эти строки в конфигурацию порта 80 для автоматического перенаправления на https с параметрами, удалите return и при необходимости настройте порт.

if ($http_x_forwarded_proto != 'https') {
  #rewrite ^(.*) https://$host$1 redirect;
}
Другие вопросы по тегам