
我正在將 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 來訪問
位於 /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