Перенаправление с http на https в Nginx на разных портах

На VDS несколько приложений на разных портах. Решил сделать самописный SSL-сертификат и сделать перенаправление с http на https для приложения, работающему на IP_SERVER:8001

Реализовал перенаправление по мануалу для первого приложения

server {
    listen 443 ssl;
    server_name IP_SERVER;

    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    location / {
        include proxy_params;
        proxy_pass http://0.0.0.0:5003;
    }

    ...
}

server {
    listen 8001;
    listen [::]:8001;
    server_name IP_SERVER;
    return 302 https://$server_name$request_uri;
}

Аналогично для второго:

server {
    listen 443 ssl;

    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    server_name IP_SERVER;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/USER/APP_DIR/APP.sock;
    }

    ...

}

server {
    listen 81;
    server_name IP_SERVER;

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

проверяю:

sudo nginx -t

Выходит сообщение:

nginx: [warn] conflicting server name "IP_SERVER" on 0.0.0.0:81, ignored

Я так полагаю, что это происходит из-за того, что в обоих настройках слушается 443(пробовал те же порты указать, на которых и работают приложения, но они тогда не работают...).

Как надо правильно прописать? Или такое нельзя реализовать?

ДОПОЛНЕНИЕ:

По HTTP они все нормально работали. Открывались разные сайты на одном IP но на разных портах.


Ответы (1 шт):

Автор решения: Алексей Белкин

Благодаря @andreymal разобрался. Оставлю настройки, если кто в будущем тоже столкнется с этим.

Ниже в настройках:

  • IP-Server: 100.100.100.100
  • HTTP-port: 81
  • HTTPS-port: 91
server {
    listen 81;

    server_name 100.100.100.100;
    return 301 https://$host:91$request_uri;

    ...
}

server {
    listen 91 ssl;
    server_name 100.100.100.100;

    ssl on;
    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/USER_FOLDER/APP_FOLDER/APP.sock;
    }

    ...
}

Не забываем открыть порт 91:

sudo ufw allow 91

Проверить конфиг nginx:

sudo nginx -t

Если все ОК и никаких ошибок, то перечитываем конфиг Nginx:

sudo nginx -s reload
→ Ссылка