Рейтинг:0

Как выполнить канонизацию IP с помощью Nginx и Certbot

флаг cn

У меня есть несколько сервисов, работающих на моем сервере, доступ к которым будет осуществляться через nginx и зашифрован с помощью certbot. Если я хочу получить доступ к моему сервису с помощью моего http://example.com, меня перенаправляют на http(s)://example.com, что здорово.

Однако, если я наберу свой IP-адрес: порт Меня не перенаправят на мой домен. Это мой файл abc.com в /etc/nginx/сайты включены

сервер {
имя_сервера abc.com; #пример: mysite.xyz
#access_log /var/log/nginx/<servicename>.access.log;
#error_log /var/log/nginx/<servicename>.error.log;

место расположения / {
        прокси_пароль http://127.0.0.1:9000; # здесь вы определяете адрес, который используется nginx для доступа к вашему сервису
        прокси_http_версия 1.1;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Соединение "обновление";
        proxy_set_header Хост $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
} # это порт, который вы используете для доступа к прокси-сервису

    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

}
сервер {
    если ($ хост = abc.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot

имя_сервера abc.com;

слушать 80;
    вернуть 404; # под управлением Certbot

}

Может ли кто-нибудь сказать мне или указать мне направление, что мне нужно изменить в моем файле abc.com, чтобы перенаправить также запросы через IP-адрес: порт к https://example.com

Я благодарен за любую помощь!

Редактировать: Я сделал свои услуги доступными через localhost, что решило мою проблему. Спасибо всем за ваш вклад!

Michael Hampton avatar
флаг cz
Не пытайтесь сделать это. Запросы на ваш IP-адрес в качестве HTTP-хоста следует игнорировать, а не перенаправлять. Практически все они вредоносные. Конфигурация по умолчанию выдает ошибку 403 для таких запросов, и ее следует оставить на месте.
sergeantSalty avatar
флаг cn
Игнорирование было бы действительно лучшим вариантом. Однако по умолчанию я не игнорирую такие запросы. Если я ввожу свой адрес ip:port, я получаю доступ к своим услугам. Что именно я могу сделать, чтобы игнорировать такие запросы? Спасибо Вам за Ваш вклад!
Michael Hampton avatar
флаг cz
Верните блок server по умолчанию, поставляемый с дистрибутивом nginx.
sergeantSalty avatar
флаг cn
О, я, должно быть, неправильно вас понял, на самом деле я не удалял блок сервера по умолчанию, поставляемый с nginx.
Рейтинг:0
флаг za

Изменять одна из последних строк

слушать 80 по умолчанию;
флаг sv
Поскольку OP использовал оператор if для перенаправления на основе хоста, приведенное выше решение не будет работать для конкретного случая использования. Таким образом, приведенное выше решение приведет к ошибке 404.
sergeantSalty avatar
флаг cn
Поти прав, так не получится, но все равно спасибо.
Рейтинг:0
флаг sv

Добро пожаловать в ServerFault.

Может ли кто-нибудь сказать мне или указать мне направление, что мне нужно изменить в моем файле abc.com, чтобы перенаправить также запросы через IP-адрес:Порт на https://example.com

Вам не нужно редактировать существующий файл, который Certbot может изменить в будущем.

Вместо этого в /etc/nginx/сайты включены, создайте другой файл (например, с именем ip.conf), следующего содержания...

сервер {
    слушать 80;
    имя_сервера 127.0.0.1;
    вернуть 301 https://example.com$request_uri;
}

В приведенном выше коде замените 127.0.0.1 на фактический IP-адрес вашего сервера, а затем замените пример.com тоже.

sergeantSalty avatar
флаг cn
Привет и спасибо за вашу помощь. Я попробовал ваш подход, но, к сожалению, он не работает. Меня по-прежнему направляют на мой незащищенный сервис. :/

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.