Перенаправление с 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