Puncte:1

Accesarea serverului web al serverului din rețeaua locală cu adresa IP locală

drapel au

Am un server cu Apache ca proxy pentru cererile către un serviciu web Node. În prezent, mă pot conecta folosind un browser din afara rețelei mele locale folosind numele meu de domeniu: https://domeniulmeu.ca. eu cred eu folosit să mă pot conecta folosind un browser în rețeaua mea locală folosind adresa IP locală a serverului: https://10.0.0.13. Totuși, când încerc acum, primesc o eroare 500. Caut ajutor pentru ca acest lucru să funcționeze din nou. De asemenea, aș fi de acord să nu folosesc SSL în rețeaua mea locală și să accesez serverul cu http://10.0.0.13 dacă asta e mai realizabil.

Primesc următorul text cu eroarea 500:

Serverul proxy nu a putut gestiona cererea 
Motiv: Eroare în timpul SSL Handshake cu serverul la distanță

Am căutat în jurnalul meu de erori Apache (/var/log/apache2/error.log) pentru mai multe indicii, dar nu am găsit textul pe care l-am găsit foarte util:

[Dum. 28 noiembrie 23:11:42.609115 2021] [proxy_http:error] [pid 28560:tid 140085584455424] [client 10.0.0.220:26070] AH01097: treceți corpul cererii la 2.0.1:1.0.0. 0,220 () 
[Dum. 28 noiembrie 23:11:42.769782 2021] [proxy:error] [pid 28560:tid 140085567670016] (20014)Eroare internă (informații specifice nu sunt disponibile): [client
10.0.0.220:26071] AH 01084: corpul solicitării de trecere a eșuat la 127.0.0.1:4201 (localhost) 
[Dum. 28 nov. 23:11:42.769805 2021] [proxy:error] [pid 28560:tid 140085567670016] [client 10.0.0.220:26071] AH00898: Eroare cu serverul de la distanță returnat de mână / SSL Handeshake

Iată cum arată fișierele mele de conf:

mydomain.ca-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName mydomain.ca
    ServerAlias www.mydomain.ca
    ProxyPreserveHost on
    SSLProxyEngine on
    ProxyPass / https://localhost:4201/
    ProxyPassReverse / https://localhost:4201/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

ServerAlias mydomain.ca
SSLCertificateFile /etc/letsencrypt/live/mydomain.ca/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.ca/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

mydomain.ca.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mydomain.ca
    ServerAlias www.mydomain.ca
    DocumentRoot /var/www/mydomain.ca
    ProxyPreserveHost on
    ProxyPass / http://localhost:4201/
    ProxyPassReverse / http://localhost:4201/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

EDIT - Iată câteva informații despre serviciul web Node: Serviciul web Node ascultă pe un singur port și ascultă doar conexiuni https.

drapel ru
`http://10.0.0.13` ar trebui să funcționeze. Asigurați-vă că acel browser nu redirecționează automat către https, ceea ce se datorează cel mai probabil ultimelor tendințe de a deveni doar https.
drapel au
Am verificat de două ori că nu am fost redirecționat și pot confirma că problema descrisă mai sus continuă să apară chiar și atunci când navighez la `http://10.0.013` din rețeaua mea locală
Puncte:2
drapel in

Ați configurat atât HTTP, cât și HTTPS pentru a se conecta la același port pe serverul backend.

Este foarte puțin probabil ca serverul tău backend să accepte ambele protocoale pe același port.

Fie utilizați HTTP în ambele VirtualHosts, fie utilizați portul corect pentru HTTPS dacă serverul dvs. backend acceptă ambele.

drapel ru
Suport backend numai http. Terminarea SSL are loc pe partea apache. Deci configurația este OK.
drapel in
nu, nu este. Aveți `ProxyPass / https://localhost:4201/` în configurația dvs. Apache încearcă să vorbească cu backend-ul tău cu https, dar răspunde cu HTTP. De aici apare „Eroare în timpul SSL Handshake”.
drapel ru
Ah, corect. Asta este o altă greșeală. Ambele gazde virtuale ar trebui să folosească http cred. Dar cu siguranță, nu știm nimic despre backend.
drapel au
Mi-am editat postarea originală cu câteva informații suplimentare despre modul în care este configurat serviciul web Node. Am încercat `ProxyPass / https://localhost:4201/` în `mydomain.ca.conf` și apoi navigând la `http://mydomain.ca`, dar apoi am primit o altă „Eroare de serviciu internă”. De asemenea, am încercat să navighez la `https://10.0.0.13` și asta continuă să-mi aducă aceeași „Eroare proxy” descrisă mai sus. În special, nu sunt sigur de ce această ultimă abordare nu funcționează când `https://domeniulmeu.ca` funcționează din afara rețelei mele.
Puncte:1
drapel au

Unele dintre comentariile de mai sus m-au făcut să mă gândesc la asta în mod corect. Abordarea cu care am mers a fost să

  • rulați servere http și https separate pe porturi diferite în cadrul serviciului meu web Node,
  • actualizați numerele de port din mydomain.ca.conf și mydomain.ca-le-ssl.conf pentru a corespunde numerelor de porturi corecte și
  • actualizați mydomain.ca.conf pentru a răspunde numai solicitărilor de la localhost sau LAN, așa cum se arată mai jos.
<VirtualHost *:80>
  # Ar trebui să accesăm serverul web doar prin http dacă pe localhost
  # sau în LAN.
  <Locație />
    Necesită local
    Necesită ip 10.0.0.0/24
  </Locație>
  ...

Cu toate acestea la locul lor, acum pot accesa http://10.0.0.13 din interiorul rețelei mele locale și https://mydomain.ca din afara rețelei mele locale.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.