WebMin+NGINX на Orange Pi

Лучше бы 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 instruction

Open /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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *