Используйте NGINX для прокси-сервера webmin в /admin

Используйте NGINX для прокси-сервера webmin в /admin

Я настраиваю NGINX в качестве WAF (брандмауэра веб-приложений).

Обратный прокси-сервер NGINX работает нормальноhttps://имя_хоста/, но я хотел бы сделатьhttps://имя_хоста/adminдля проксирования в интерфейс Webmin.

Сценарий следующий: Интернет NET = 0.0.0.0/32 Сетевая LAN = 6.0.0.0/8 Сетевая DMZ = 11.0.0.0/8

Так как NET=(маршрутизатор)=LAN=(nginx)=DMZ=(несколько виртуальных машин) |--->dmz>---|

Пока все работает нормально, но теперь я хочу создать Webmin в каждой виртуальной машине, чтобы получать к ней доступ, добавляя /admin в конце имени хоста.

такой какhttps://nas/admin

Пример файла конфигурации, расположенного в /etc/nginx/sites-enabled:

server {
    listen 443 ssl; # managed by Certbot
    server_name nas;
    location /.well-known {
            alias /var/www/nas/.well-known;
    }
    location / {
        proxy_buffers 16 4k;
        proxy_buffer_size 2k;
        proxy_set_header        Host $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 $scheme;
        proxy_pass          https://11.0.0.12:443;
        proxy_read_timeout  90;
    }
    location /admin {
        proxy_pass          https://11.0.0.12:10000;
    }
    client_max_body_size 10G;
    ssl_certificate /etc/letsencrypt/live/nas/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nas/privkey.pem;
}

server {
    listen 80;
    server_name nas;
        return 301 https://$host$request_uri;
}

Что я делаю не так?

решение1

Для решения проблемы потери изображений/стилей:

Интерфейс Webmin, вероятно, использует смесь относительных и абсолютных путей. Вот почему вы не получаете изображения. Вам нужен подмодуль:--with-http_sub_module

Что-то вроде этого может помочь:

location /admin {
    sub_filter 'https://11.0.0.12:10000/' '/';
    sub_filter_once off;
    proxy_pass          https://11.0.0.12:10000;
}

Для решения проблемы перенаправления это может помочь:

proxy_redirect https://11.0.0.12:10000/  /;

или

proxy_redirect /  /admin/;

решение2

Попробуй это:

location /admin/ { 
    rewrite ^/admin/?(.*)$ /$1 break;
    proxy_pass          https://11.0.0.12:10000; 
}

решение3

Никаких дополнительных модулей не требуется. Нужны некоторые настройки webmin.

sudo nano /etc/nginx/sites-available/FQDN.conf

location /admin/ {
      # proxy_buffering       off;
        proxy_pass            http://127.0.0.1:10000/;
        proxy_set_header      Host $host;
        proxy_set_header      X-Forwarded-For $http_x_forwarded_for;
        proxy_redirect        http://$host:10000/ http://$host/admin/;
}

сохрани и закрой.

sudo nginx -t
sudo systemctl reload nginx

Обновить конфигурацию webmin

sudo nano /etc/webmin/config

добавить в конец

relative_redir=0
referers=www.FQDN.com FQDN.com
webprefix=/admin
webprefixnoredir=1

Сохранить и закрыть.
Обновить miniserv

sudo nano /etc/webmin/miniserv.conf

Изменить ssl=1> ssl=0 (это связано с тем, что nginx должен сначала обработать SSL)

добавить в конце

ssl_redirect=0

Команда Run:

sudo systemctl restart webmin

Перейдите на FQDN.com/admin илиwww.FQDN.com/admin

Связанный контент