使用 NGINX 代理 /admin 中的 webmin

使用 NGINX 代理 /admin 中的 webmin

我正在设置 NGINX 作为 WAF(Web 应用程序防火墙)。

NGINX 反向代理工作正常https://主机名/,但我想https://主机名/admin被代理到 Webmin 界面。

场景如下: Internet 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

添加到 eof

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)

在 eof 处添加

ssl_redirect=0

运行命令:

sudo systemctl restart webmin

转到 FQDN.com/admin 或www.FQDN.com/admin

相关内容