Sunt într-o situație foarte neobișnuită și am petrecut aproape 8 ore încercând să-mi dau seama care este problema.
Pregatirea
Am un server care rulează Debian 11. În interiorul acestui server, am configurat o mașină virtuală CentOS cu KVM. Mașina virtuală găzduiește o aplicație web complexă în spatele unui server Apache. Interfața de rețea a KVM-ului este NAT și, prin urmare, pentru a accesa aplicația web, am configurat regulile de redirecționare a porturilor folosind libvirt
cârlige așa cum este descris aici:
https://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
Configurația mea trimite orice conexiuni de intrare la portul 443 către serverul Apache de pe mașina virtuală și aceasta funcționează bine.
De asemenea, am configurat un server Nginx pe mașina gazdă, deoarece intenționez să-l folosesc ca proxy invers. Voi găzdui o altă aplicație pe serverul gazdă pe portul 9000. Folosind Nginx pentru proxy invers, intenționez să redirecționez toate cererile către https://example.com
către Mașina Virtuală și toate solicitările către https://example.com/app/
la aplicația web care rulează pe portul 9000.
Problema
Am instalat serverul Nginx după configurarea mașinii virtuale și a regulilor de redirecționare a portului corespunzătoare. Dar când încerc să rulez pagina de pornire a serverului Nginx, nu este accesibilă. Înțeleg că portul 443 este redirecționat către VM. Deci, încerc să mă încarc cu http://example.com
așteaptă ca acesta să încarce pagina de pornire Nginx pe portul 80. Dar tot spune că site-ul web este inaccesibil.
Ce am incercat pana acum?
Am bănuit că regulile de redirecționare a portului de la gazdă la oaspete ar putea fi cauza principală aici. Așa că am schimbat regula de redirecționare a portului de la portul 443 la 8000. Deci orice solicitare către portul 8000 va fi redirecționată către serverul Apache de pe VM. Dar după ce a făcut acest lucru, portul 443 a devenit și el inaccesibil.
Am încercat să șterg complet iptables așa cum este descris aici:
Ștergeți și resetați iptables în Debian
Dar totuși, serverul Nginx rămâne inaccesibil.
De asemenea, foarte ciudat, după ștergerea iptables-ului, când încerc să accesez aplicația care rulează pe portul 9000 cu http://example.com:9000
primesc un 400 Eroare de solicitare greșită
iar când schimb protocolul în https
, pagina devine inaccesibilă.
Orice sfat ar fi de mare ajutor. Mulțumesc.