Задать вопрос
@Wolfengo
Я ещё зелёный, сильно не душите

Как сделать так, чтобы nginx не слушал http, а только https?

server {
    listen 12345;
    server_name 1.1.1.1;

    return 301 https://$host:12345$request_uri;
}

server {
    listen 12345ssl;
    server_name 1.1.1.1;

    ssl_certificate     /etc/nginx/mtls/server.crt;
    ssl_certificate_key /etc/nginx/mtls/server.key;

    ssl_client_certificate /etc/nginx/mtls/ca.crt;
    ssl_verify_client optional;

    if ($ssl_client_verify != SUCCESS) {
        return 444;
    }

    location / {
        proxy_pass http://127.0.0.1:1010;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-SSL-Client-DN $ssl_client_s_dn;
    }
}


Я уже перепробовал всё, но даже не могу понять как сделать хотя бы редирект на https. Он мне в http выдаёт заглушку nginx, но я хочу делать либо редирект, либо не отдавать вообще ничего 444, а в идеале, вообще таймаут соединения:
400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • ProductStar
    Профессия DevOps-инженер
    5 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик буткемп
    4 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если не получается заставить nginx перестать принимать запросы на 80й порт, то закрой входящие соединения на 80й порт через файрвол ;-)

p.s. а так на вскидку
  • надо после правки конфига не забыть сделать reload/restart
  • может быть где-то валяется default конфиг с указанным listen 80 либо там может быть listen ip.ip.ip.ip без порта, то тоже по дефолту будет означать "слушай 80й порт"


поискать конфиги со строчкой listen
find /etc/nginx -type f -exec grep listen {} +
Ответ написан
Комментировать
svisch
@svisch
у вас два сервера слушают один и тот же порт - 12345
должно быть типа 80 - http и 443 - https
и соответственно в дерриктиве перенаправления return 301 https://$host:12345$request_uri; указать 443
Я бы начал с этого.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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