
Я настраиваю 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