NGINX를 사용하여 /admin에서 webmin을 프록시합니다.

NGINX를 사용하여 /admin에서 webmin을 프록시합니다.

NGINX를 WAF(웹 애플리케이션 방화벽)로 설정하고 있습니다.

NGINX 역방향 프록시가 제대로 작동합니다.https://호스트 이름/, 하지만 만들고 싶습니다https://호스트 이름/관리자Webmin 인터페이스로 프록시됩니다.

시나리오는 다음과 같습니다. 인터넷 NET = 0.0.0.0/32 네트워크 LAN = 6.0.0.0/8 네트워크 DMZ = 11.0.0.0/8

NET=(라우터)=LAN=(nginx)=DMZ=(몇몇 가상 머신) |--->dmz>---|

지금까지는 모두 잘 작동하지만 이제는 호스트 이름 끝에 /admin을 추가하여 액세스할 각 가상 머신에 Webmin을 만들고 싶습니다.

~와 같은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

관련 정보