Лучше бы BDSM начал изучать, наверное…
Воспалённая фантазия преподнесла очередную мысль:»А что если в пределах одного внешнего белого IP организовать получение контента сайтов с разных физических серверов?»
Задача в том, что при обычной схеме можно перебросить порт только на 1 сервер. Поэтому в роли этого компа будет выступать Orange Pi (Raspberry Pi) c NGINX, который будет раскидывать 80 порт по серверам в зависимости от домена.
Более-менее адекватное решение для данного вопроса нашлось в WebMin.
На чистый ARMBIAN (buster) ставим nginx:
apt update
apt install nginx
И пока можно его оставить в поке.
Теперь погнали за webmin’ом.
Добавляем в /etc/apt/sources.list пару репозиториев
deb download.webmin.com/download/repository sarge contrib
deb webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Подкладываем свинью в виде GPG ключа
cd /root
wget www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
Теперь можно ставить сам webmin
apt update
apt install webmin
На этом основная часть готова, можно заходить по localhost:10000
Не забываем прикрутить нужный домен, сменить порт и пробросить в маршрутизаторе.
После этого шага у меня начался ступор, поскольку надо было вебморду получить для nginx, но по этому вопросу везде было указано:
apt install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
И тут был подвох:
apt install webmin-virtualmin-nginx webmin-virtualmin-nginx-ssl
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package webmin-virtualmin-nginx
E: Unable to locate package webmin-virtualmin-nginx-ssl
Добавление различных репозиториЁв не дало никакого эффекта, кроме полезной строки добавления их ключей (мало ли пригодится):
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo apt-get update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`
Ну да ладно, шило в жопе горит так, что сидеть спокойно уже невозможно, ведь вот оно, почти готово всё… и firewall, и iptables, и мониторинг, и вагон всяких плюшек в единой вебморде, но сраный nginx под ArmBian так и хочет тебе подставить вместо стула бутылку.
Но нет, пошли по логическому пути: если webmin имеет модульную систему, то что будет, если ему подсунуть именно модуль nginx?
Находим и качаем модуль тут.
Подкладываем его через конфигурацию webmin как новый модуль и он нормально ставится.
Заходим в серверы — nginx и видим желание всей системы придать тебе вращение, осью которой является половой орган во весь монитор: Perl выдаёт 500 ошибку. В рот мне ноги!
Ну да ладно. Нагуглил, убери за собой. Подкидываем:
apt install perl-libwww-perl
apt install perl-DBI
apt install perl-DBD-MySQL
apt install perl-GD
Если дело касается обычной системы и выдаётся:
Can't locate HTML/Entities.pm in @INC (you may need to install the HTML::Entities module) (@INC contains: /usr/share/webmin /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base /usr/share/webmin/ .)
то продолжаем пытать клавиатуру:
apt install libhtml-parser-perl
По этому поводу ещё нашёл подсказку, но мне не пригодилась:
Solving the Perl execution failed error
Follow this instructionOpen /usr/share/webmin/nginx/nginx-lib.pl
Go to line 199 and add a backslash before the opening bracket
if ($line =~ /server {$/) {Do not forget to add a backslash before the closing bracket on line 202
if ($line =~ /}$/) {
Так же не забываем после каждой установки дополнения или изменения конфигов
service webmin restart
На этом танцы с бубном заканчиваются и можно пользоваться всеми прелестями жизни.
На затравку пример прокси nginx (заметил что если всё пихать в один конфиг, то nginx покрывается ошибками, пока что не разбирался в этом):
server {
listen 80
server_name site1.ru www.site1.ru;
location / {
proxy_pass http://192.168.1.21/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443
server_name site2.ru www.site2.ru;
location / {
proxy_pass http://192.168.1.22/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Ну или принудительное перенаправление прокси при запросе http на https
server {
listen 80
server_name site3.ru www.site3.ru;
return 301 https://$host$request_uri;
}
Один комментарий для “WebMin+NGINX на Orange Pi”