Puncte:0

Redirecționați cererea HTTP (sau TCP) prin NGINX folosind subdomeniul către un anumit port

drapel in

Vreau să expun un server web local printr-un server web la distanță. Gazda de la distanță are deja un Nginx și o aplicație web (webmail). Serverul de la distanță funcționează ca o poartă de acces pentru serverul web local care redirecționează portul 80 către cel de la distanță 8080. Acesta funcționează.

Acum vreau să redirecționez cererile de subdomeniu (de exemplu, bridge.mydomain.co) către portul redirecționat. Am încercat să folosesc asta:

Server {
    asculta 80;
    asculta [::]:80;
    nume_server bridge.mydomain.co;

    Locație / {
        proxy_set_header Gazdă $gazdă;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Serverul web local rulează o aplicație PHP complexă, așa că se plânge:

40 de erori precum:

A refuzat să încărcați foaia de stil „”, deoarece încalcă codul următoarea directivă privind politica de securitate a conținutului: „default-src https: data: „unsafe-inline” „unsafe-eval””. Rețineți că „style-src-elem” nu a fost setat în mod explicit, deci „default-src” este folosit ca alternativă.

și 56 din:

Am refuzat încărcarea scriptului „”, deoarece încalcă următoarele Directiva privind politica de securitate a conținutului: „default-src https: data: „unsafe-inline” „unsafe-eval””. Rețineți că „script-src-elem” nu a fost setat în mod explicit, deci „default-src” este folosit ca alternativă.

Știu că aș putea expune direct portul redirecționat, asta funcționează impecabil. Dar vreau să folosesc (eventual) nginx pentru terminarea TLS și apoi redirecționarea.

Citind despre această problemă se pare că serverul web local în PHP refuză solicitările. Totuși, nu știu cum să o repar.

Orice ajutor?

djdomi avatar
drapel za
sunteți sigur că serverul PHP nu solicită HTTPS în loc de HTTP?
Puncte:0
drapel in

Înțelege-l la sfârșit. Trebuia să trec/adaug următoarele antete:

Server {
    asculta 80;
    asculta [::]:80;
    nume_server bridge.mydomain.co;

    server proxy_pass_header;

    Locație / {
        proxy_set_header Gazdă $gazdă;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://bridge.mydomain.co http://bridge.mydomain.co:8080 http://bridge.mydomain.co/core/img/favicon-touch.png; img-src „self” http://bridge.mydomain.co http://bridge.mydomain.co:8080;";
        proxy_pass http://bridge.mydomain.co:8080;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Cred că versiunea portului nu este necesară și lipsesc unele anteturi care sunt acoperite de „implicit”. Deci este loc de îmbunătățire.

Dacă doriți să citiți o explicație aici, există materiale de la oameni mai cunoscători decât mine: https://stackoverflow.com/questions/33300111/how-to-override-content-security-policy-of-site-a-while-using-nginx-proxy-pass-o

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.