LINUX.ORG.RU
решено ФорумAdmin

Запуск nginx после получения IP через pppoe после перезагрузки сервера

 , ,


0

3

Debian 12

Проблема в том, что сейчас nginx стартует (пытается) до получения выделенного IP через pppoe, а в настройке хостов стоит данный IP и соответственно nginx не стартует.

В общем, как сделать так, чтобы сначала сетевой интерфейс получал IP через pppoe, а только потом стартовал nginx.

Пробовал сделать через rc-local, но он тоже выполняется до получения IP через pppoe…


Ответ на: комментарий от MagicMirror

Потому что listen 0.0.0.0:443 SSL приводит к фейлу на сайте.

Самое простое и верное решение без костылей: идем в юнит /usr/lib/systemd/system/nginx.service

В секции [Unit] в After и в Wants через пробел добавляем: sys-subsystem-net-devices-ppp0.device (ну или какое у вас будет виртуальное устройство, наименование юнита ищем через команду systemctl list-units)

Anoxemian, спасибо!

unigen
() автор топика
Ответ на: комментарий от PRN

Решение курильщика - Создание проблемы: слушать все интерфейсы, решение проблемы: файрволл, блочить лишнее.

Решение здорового человека - Слушать только нужные интерфейсы.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Красиво было на бумаге, да забыли про овраги.

В итоге получили неочевидный хак конфигурации сервиса в системном менеджере ради удволетворения ОКР. А мог оставить 0.0.0.0 и никогда об этом не вспоминать.

MagicMirror
()
Ответ на: комментарий от Anoxemian

Нет ты. Вместо одного очевидного site.conf с listen 0.0.0.0:443 ssl; есть site.conf + /etc/systemd/system/nginx.service.d/override.conf с несколькими строчками INI внутри или упаси господь дистроспецифичные if-up скрипты и зависимость от постороннего сервиса.

Пять баллов за создание лапши ради ничего.

MagicMirror
()
Последнее исправление: MagicMirror (всего исправлений: 2)
Ответ на: комментарий от MagicMirror

Нет ты. Что за чушь ты несешь? Какой оверрайд, какой фаерволл, какой к уям системды, что это за поридж-бабуйня? Конфигурация сервиса - задача сервиса. Зачем создавать проблемы и потом их превозмогать? В чем прикол?

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Зачем создавать проблемы и потом их превозмогать? В чем прикол?

Так ты опиши в чем создание проблемы то. Если этот интерфейс смотрит «наружу» или там есть угрозы он уже под файерволом. А если угроз нет, то и пофиг что туда слушать начали.

PRN
()
Последнее исправление: PRN (всего исправлений: 2)
Ответ на: комментарий от Anoxemian

Какой оверрайд

Объясни тогда как иначе надо запускать nginx после pppd?

какой фаерволл

Не знаю, это тебе надо защищаться от хз чего.

какой к уям системды, что это за поридж-бабуйня?

«Запиканый» мат - всё ещё мат.

Конфигурация сервиса - задача сервиса

Ты своим «слушать на одном ip» размазал её за пределы ответственности сервиса.

Зачем создавать проблемы и потом их превозмогать? В чем прикол?

Это к тебе вопрос.

MagicMirror
()
Ответ на: комментарий от Anoxemian

Прочитал

Создание проблемы: слушать все интерфейсы

Ок. Похоже ты не очень понимаешь слово «проблема».

Я переформулирую вопрос. Какой негативный эффект принесет это решение?

PRN
()
Ответ на: комментарий от MagicMirror

Объясни тогда как иначе надо запускать nginx после pppd?

тс справился и ты сможешь, не сы

Не знаю, это тебе надо защищаться от хз чего.

это твое решение, не передергивай, хотя, лучше передергивай

«Запиканый» мат - всё ещё мат.

да

Это к тебе вопрос.

я их не создаю же

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Возможно русский для тебя не родной))

Я об этом уже писал:

Если этот интерфейс смотрит «наружу» или там есть угрозы он уже под файерволом.

Ничего настраивать не надо))

PRN
()
Ответ на: комментарий от Anoxemian

тс справился и ты сможешь, не сы

Вкинул говно и сразу ретировался, как пояснять пришлось.

это твое решение, не передергивай, хотя, лучше передергивай

Аншлаг, ололо

да

*****

MagicMirror
()
Ответ на: комментарий от Anoxemian

Чувак, ты понимаешь что если нужен файерволл, то последний уже настроен, запущен и работает, Настройка будет только если какой-то сервис надо будет разрешить, на каком-то интерфейсе. А раз на том интерфейсе ничего разрешать не надо, то и настройки не будет.

PRN
()
Ответ на: комментарий от PRN

Чувак, ты понимаешь, если не нужен фаерволл, то ничего настраивать не надо. Конфиги придумали люди для конфигурации сервисов. Это нормально, смотри, у nginx есть в директории /etc целый набор всяческой интересной шляпы, у самого сервиса - тонна документации, добро пожаловать в реальность.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

если не нужен фаерволл, то ничего настраивать не надо

Так и я про то же, пусть слушает)) раз файерволл не нужен, то можно не париться. Ты какой-то херней занимаешься в этой жизни))

PRN
()
Ответ на: комментарий от Anoxemian

Опускать идиотов - херня? О_о Твои приоритеты - говно. Не парься дальше.

Идиот в этом треде только один - это ты)). Придумал «проблему» на ровном месте и с чувством выполненного долга ее решил.

PRN
()
Ответ на: комментарий от Anoxemian

Чтобы сервис не зависел от сети. Локальные адреса и интерфейсы приходят и уходят, сервис не должен зависеть от их наличия или отсутствия. Вот опустили этот интерфейс, а что делать с сервисом? Останавливать? Поэтому слушать не на 0.0.0.0 это стрелять себе в ногу.

iliyap ★★★★★
()
Ответ на: комментарий от MagicMirror

К очень простому - сертификат SSL выписан на IP адрес сайта, а не на 0.0.0.0 - прежде чем предлагать такое идиотское решение, неплохо было бы попробовать проверить.

unigen
() автор топика
Ответ на: комментарий от unigen

Имена хостов, даже если это ради какой-то неведомой цели ip адрес, задаются директивой server_name, а не listen. Прежде чем делать такой идиотский конфиг, неплохо было бы попробовать почитать документацию. Или хотя бы so.

MagicMirror
()
Ответ на: комментарий от unigen

Какой фейл?

Даже если сертификат выдан на ip-адрес, то что мешает в конфиге nginx в servername указать ip?

nginx умеет выбирать из пачки сертификатов наиболее подходящий.

Важно чтобы servername совпадал с сертификатом

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 2)
Ответ на: комментарий от Dimez

Да, действительно на домен. Неправильно выразился.

listen 0.0.0.0:443 ssl;

Мало того, что это избыточность, которая никому не нужна, так я еще раз говорю - вы проверьте, будет ли корректно загружаться сайт по HTTPS. Я только что проверил - не работает! Указываю реальный адрес сайта - работает, указываю «всю сеть» - фейл.

На сервере крутиться Apache [80] и nginx [443].

unigen
() автор топика
Ответ на: комментарий от MagicMirror

Это идиотский конфиг?

server { server_name server.ru *.server.ru www.server.ru; charset UTF-8; disable_symlinks if_not_owner from=$root_path; index index.php index.html; set $root_path /var/www/server.ru;

    listen 185.55.55.55:443 ssl;

    ssl_certificate /etc/letsencrypt/live/server.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/server.ru/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/server.ru/fullchain.pem;


    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
            root $root_path;
            access_log /var/log/www/nginx/server.ru.log;
            error_page 404 = @fallback;
    }
    location / {
            proxy_pass http://185.55.55.55;
            proxy_http_version 1.1;
            proxy_redirect http://185.55.55.55/ /;
            proxy_set_header Host $host;
            proxy_pass_header Server;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
    }
    location @fallback {
            proxy_pass http://185.55.55.55;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
    }

}

unigen
() автор топика