使用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

儲存並關閉。
更新迷你服務

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

相關內容