Переезжаю не спеша с NginxProxyManager

Всем привет. Мой уровень продвинутый пользователь :slightly_smiling_face: . Всё установлено и зарущено самостоятельно с помощью, не без помощи конечно гуглояндекса и когда совсем затык, то уже просил помощи у старших братьев в тележеньке. (скажу по секрету, канал по фряхе состоит из “как ты посмел, смерд, с нами разговаривать!” :joy: Это было неожиданно).

Так вот, имею домашний Truenas core, на фриибсд который. В джейлах крутятся Nextcloud и OnlyOffice, а на виртуалке NginxProxyManager. На входе в дом стоит кинетик, который 80 и 443 порты перекидывает на NPM. СНаружи белый статичный айпи.
Также есть второй кинетик (в гараже) с трунасом. Он на мобильном тырнете и с домашним кинетиком установлен постоянный IPSEC туннель. В гаражном трунасе крутиться виртуалка с виндой и на нем securos (наша _iss.ru для видеонаблюдения) который принимает на 7777, 7779, 8888 и 8889 портах.
И из дома я по адресу 192.168.2.* спокойно хожу в гаражную локалку.
Ну и есть у меня еще пару доменов.
Это была присказка )

Понадобилось мне, значит, расширить функционал прокси сервера своего. И прошерстив гугл, понял, что мануалов то по НПМ и нет. В основном как установить и как в вэб морде мышкой тыкнуть.
НУ и начал я значит, искать не спеша замену. А т.к. с бусурманскими языками не в ладах, то мануалы на русском было ключевым фактором. И тут в православной тележеньке на одном из каналов написали “angie попробуй”.

Ну и вот, попробовал. Мануалы ж на русском, так почему бы и нет )))) Первый заход был весной, но что-то пошло не так. И вот октябрь месяц, сделал вторую попытку, и мне понравилось первый раз то, что не имеет вэб-морды (графического управления). Получилось настроить. Облако (некстклоуд) заработал. НПМ отключил.
Первое с чем столкнулся, со смарта не все файлы могли синхронизироваться с облаком. По ошибке из приложения вышел на client_max_body_size . Тут в поиске забил, и поиск выдал прям пункт мануала. Ок, прописал client_max_body_size 0m; и файлы со смарта пошли в облако.

Теперь вопрос такой
Вот скрин:

Пункт 1 :

Функция «block common exploits» в NGINX Proxy Manager (NPM) отвечает за защиту от известных уязвимостей . Она блокирует параметры запросов, содержащие известные payload для эксплуатации уязвимостей

по поиску в мануале тут мне ничего толком не выдал. По смыслу понятно, что данная функция полезна. Как здесь это реализовано ?

Пункт 2:
Сходу в мануале не нашел, сходил погуглил. Нагуглил что это параметр proxy-cache . Правильно я нагуглил ? И в принципе нужен ли этот кэш если нагрузка только некстклаудом в три не особо активных пользователя (смартфона) всего ?

Пока вопросы по переезду закончились. Ну почти )
securos
К нему можно подключаться или через браузер по 8889 порту или через приложение по 7777, 7779 и 8888 портам. Проброс (или как у вас это стриминг вроде называется) портов для приложения сделал (напомню, что секурос во второй локалке сиди, по адресу 192.168.2.*). Приложение работает.
А вот через браузер по адресу секурос.мойдомен.рф не хочет.
конфиг

раз второе фото нельзя, вот ссылка на скрин

Переключаю 80 и 443 порт обратно на НПМ, работает. Да, логи еще не смотрел ) Это так, факультативный вопрос, вдруг какой параметр по умолчанию может влиять на это (это ж другая локалка). Со смарта пинг не проходит, 100% лост.

В дальнейшем геоАйПи еще настраивать буду, модуль уже установлен.
Советы по настройке для конфига некстклауда приветствуются (ну может кто-то уже делал и знает уже еще чего полезного для него) :slightly_smiling_face:

Всем ответившим спасибо.
Зы ))) а фоточку то только одну можно ставить.
Зы 2 ))) да будь не ладны эти боты, ссылки тоже две :joy:

У NPM внутри такой же nginx и когда вы что-то в интерфейсе мышкой нажимаете, то просто подкладывается какой-нибудь файл с конфигом.

В самом Angie никаких “известных уязвимостей нет”. Данная опция просто включает вот такой конфиг: nginx-proxy-manager/docker/rootfs/etc/nginx/conf.d/include/block-exploits.conf at develop · NginxProxyManager/nginx-proxy-manager · GitHub

Все конфиги к nginx точно также подходят для Angie, так что можете просто его у себя подключить в нужный блок server. Но лично я смысла большого не вижу. Там довольно примитивные проверки аргументов запроса на содержание чего-то похожего на SQL или адреса. При этом параметры POST-запросов не проверяются.

Лучше просто не запускать софта с такими банальными уязвимостями. В то же время, с той же вероятностью эта штука может заблокировать и какие-то вполне валидные запросы.

Также там по заголовку user-agent пытаются блокировать различных ботов и ещё зачем-то запросы от Perl. Если вы вдруг будете использовать какую-нибудь Perl-софтину, которая должна будет взаимодейстовать с вашим сервисом, то долго будете потом искать причину, а чего же она не работает.

При этом любой, кто действительно захочет попытаться поломать что-то на вашем сайте - легко подменит user-agent на идентичный обычному браузеру.

Опять же, это просто включение вот такого конфига (как и вообще все опции в NPM):

Как видно это не совсем просто кэш, а включение кэширования исключительно для обращений к вот такому набору файлов, которые типично используются для украшения HTML. Все эти статические файлы вообще лучше не проксировать, а раздавать непосредственно самим Angie.

Я не знаю как работает Nextcloud и какие там запросы, но возможно, что вы не хотите получить ситуацию, когда файл в хранилище поменяли, а Angie отдает его раннюю закэшированную когда-то копию.

Поэтому не стоит просто слепо включать кэширование чего-то. Нужно понимать как работает приложение, что вы хотите кэшировать и какую задачу или проблему этим кэшированием хотите решить.

Поздравляю с тем, что от кликания мышкой каких-то непонятных опций в веб-интерфейсе включающих сомнительные конфиги - вы перешли к осознанной настройки своего сервера.

P.S. А для чего в конфиге выше NPM прописывает if_modified_since off, что должно сильно навредить - вообще непонятно. Стоит учитывать, что автор NPM сам не большой знаток nginx, который он использует.

Ок, спасибо. Стало гораздо понятнее.
Ну значит оставляю всё как есть и не парю мозг себе.
Буду потихоньку дальше настраивать angieв частности geoip, хочу кинетика им закрыть, чтоб не долбились супостаты в него, вечно логи с километр, всё до впн хотят достучаться :smile:

вот а, тоже такая мысль приходила когда гуглил про кэш. Но в силу моих околонулевых знаний в этом вопросе, я чет думал система должна понимать что можно кэшировать (постоянные данные типа иконок на сайте, оформления), а что не надо (ну типа динамичные файлы и т.п.) при этом “спрашивая” у сайта “это и это менялось или нет”.

Продолжаю кастомайзиг.
geoip2.
Его прикрутил. ПРоверял через впн-ы
curl https://адрес
предварительно раскоментировал echo и закоментировал proxy (на скрине уже наоборот). В ответ я получал правильный статус.
Теперь хочу включить кастомизированную страницу с кодом 404 (это пока выбрал для пробы).

В конфиге прописал return 404 (стрелка 1)
в defolt.conf раскоментировал 404 и добавил файл 404.html (сам файл тупо копия 50*.html и переименован, так я на 100% уверен что он отобразится, на данном этапе это и надо. Редактировать уже после буду, когда убеждусь что он отображается).

Summary

server {
listen 80;
server_name localhost;

#access_log  /var/log/angie/host.access.log  main;

location / {
    root   /usr/local/www/angie/html;
    index  index.html index.htm;
}

location /status/ {
    api     /status/;
    allow   127.0.0.1;
    deny    all;
}

error_page  404              /404.html;
location = /404.html {
    root   /usr/local/www/angie/html;
}
# redirect server error pages to the static page /50x.html
#
error_page  500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/local/www/angie/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with angie's one
#
#location ~ /\.ht {
#    deny  all;
#}

}

Но она не отображается. Еще немного погуглив, раскопал про дерективу proxy_intercept_errors (стрелка 2). Но и это не помогло, все равно отображается стандартное 404 not found

Summary

что-то делаю не так.
И в мурзилке по поводу кастомизации error_page ничего не нашел.

Как правильно сделать кастомизированные страницы ошибок ?

P.s пока сделал так
return 301 "https://www.youtube.com/watch?v=qn9FkoqYgI4" )))

Для начала стоит ознакомиться с базовой информацией:

  1. Конфигурационные файлы — Angie Software
  2. Соединения, сессии, запросы, логи — Angie Software

То, что вы настроили в рамках блока server c server_name localhost; - распространяется только на даный блок и никакого влияния на другой ваш блок server не оказывает.

д, я знаю, это тестовый блок был.
geoip всё настроил.
создал отдельный conf

Summary
if ($allowed_reg = yes) {
    set $local yes;
   }

if ($local = no) {
return 301 “https://www.youtube.com/watch?v=qn9FkoqYgI4”;
}

и в какой надо блок, вставил include на него.

Спасибо.