Puncte:1

Reverse proxy și auto_complete cu conținut mixt

drapel sa

Am o configurație apache cu proxy invers (IP-ul acestui server: 192.168.1.82) pentru a gestiona noul meu server D9:

192.168.1.82 : 443 este transmis la 192.168.1.87 ca HTTP(80)

<VirtualHost *:443>
    ServerName www.mydomain.be
    ServerAlias mydomain.be
    NameVirtualHost www.mydomain.be

    ProxyPreserveHost On
    ProxyPass / http://192.168.1.87:80/
    ProxyPassReverse / http://192.168.1.87/
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off
    SSLProxyVerify none
    ...
</VirtualHost>

Cred că se numește Terminare SSL

192.168.1.82 : 80 este redirecționat ca https (443)

<VirtualHost *:80>
    ServerName www.mydomain.be
    Redirect permanent / https://www.mydomain.be/
</VirtualHost>

192.168.1.87 : setări.php

$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = [
  „192.168.1.82”,
];
$_SERVER['HTTPS'] = 'activat';
$settings['ssl'] = TRUE;

Din păcate, caracteristica de completare automată a unui câmp de referință de entitate solicită un punct final non https (nesecurizat) (conținut mixt):

http://www.mydomain.be/fr/entity_reference_autocomplete/node/default:node/3veI...I?q=t

Ce pot face pentru a forța https... Voi accepta cel mai urât hack dacă funcționează (da, sunt aici)

Testul 1: ProxyPass https în loc de http [nu va funcționa, vezi mai jos]

Am adaptat gazda virtuală 82 după cum urmează;

SSLProxyEngine activat
ProxyPass / https://192.168.1.87/
ProxyPassReverse / https://192.168.1.87/

=>De data aceasta nu am problema de conținut mixt, dar am ERR_TOO_MANY_REDIRECTS din nou pentru punctul final de completare automată a acestei entitati

Testul 2: hack Symfony\Component\HttpFoundation\Request::isSecure()

Iată noua mea funcție isSecure():

funcția publică esteSecure(){
  returnează TRUE;
}

Făcând acest lucru, adresa URL de completare automată folosește https, dar de data aceasta, am primit ERR_TOO_MANY_REDIRECTS

GET https://www.mydomain.be/fr/entity_reference_autocomplete/node/default%3Anode/3ve...I?q=T net::ERR_TOO_MANY_REDIRECTS

Nu am nicio idee de unde poate veni

Kevin avatar
drapel in
Ați încercat să impuneți acest lucru la nivelul htaccess?
Baud avatar
drapel sa
idee bună: cum se face? Mulțumesc anticipat pentru pont!!!
Kevin avatar
drapel in
https://linuxize.com/post/redirect-http-to-https-in-apache/
Baud avatar
drapel sa
@kevin: aceasta nu este o redirecționare https, aceasta este o terminare SSL: 82 gestionează criptarea și trece rezultatul (ProxyPass) la 87 ca http simplu. Configurația mea arată aproape bine, deoarece totul funcționează, cu excepția conținutului mixt. Nu știu dacă aceasta este o problemă Drupal sau o problemă Apache
Puncte:1
drapel in

Fișierul htaccess din Drupal ar trebui să poată forța tot traficul ca HTTPS. Există câteva comentarii în fișier, dar ceva de genul acesta ar trebui să funcționeze (utilizat în mai multe proiecte):

  # Forțați tot traficul la HTTPS, cu excepția unei instanțe locale
  RewriteCond %{HTTPS} off
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteCond %{HTTP_HOST} !^local\.dev\.domain$ [NC]
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]




  # Modificați RewriteBase dacă utilizați Drupal într-un subdirector sau într-un
  # VirtualDocumentRoot și regulile de rescriere nu funcționează corect.
  # De exemplu, dacă site-ul dvs. se află la http://example.com/drupal anulați comentariul și
  # modificați următoarea linie:
  # RewriteBase /drupal
  #
  # Dacă site-ul dvs. rulează într-un VirtualDocumentRoot la http://example.com/,
  # decomentează următorul rând:
  # RewriteBase /

A treia linie este opțională - ar scuti un mediu de dezvoltare local de la rescriere. Dacă utilizați un SSL local, puteți omite acea linie.

Dacă Apache deservește toate cererile, va trece prin aceste reguli, le va evalua și va face rescrie.

Puteți testa regulile aici: https://htaccess.madewithlove.com/

Iată testul: https://htaccess.madewithlove.com?share=69ce1303-b1af-4041-aecf-a32f2ecd1bfb

introduceți descrierea imaginii aici

Baud avatar
drapel sa
Vă mulțumesc foarte mult, am adăugat cele 4 rânduri la sfârșitul fișierului drupal implicit fără succes: https://htaccess.madewithlove.com?share=1cbb4094-19ed-4407-96a3-07c50a159c68
Kevin avatar
drapel in
Ordinea contează în htaccess. Încercați după această linie de comentariu `# RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]`
Kevin avatar
drapel in
Mi-am actualizat răspunsul, astfel încât să puteți vedea unde ar trebui să meargă regulile. Vezi rezultate noi: https://htaccess.madewithlove.com?share=e8e28846-517d-42cf-bc84-d46a736bdd62
Baud avatar
drapel sa
Din păcate, am primit ERR_TOO_MANY_REDIRECTS.
Baud avatar
drapel sa
Acest lucru se datorează faptului că https este redirecționat către serverul 87 ca http de către serverul meu apache 82... Apache-ul meu 87 se ocupă de portul 80
Baud avatar
drapel sa
Am adăugat mai multe detalii în întrebarea mea
Puncte:0
drapel cn

Încercați să setați antetele X-Forwarded-* în proxy-ul invers Apache:

<VirtualHost *:443>
    ServerName www.mydomain.be
    ServerAlias ​​mydomain.be
    NameVirtualHost www.mydomain.be

    ProxyPreserveHost activat
    ProxyPass / http://192.168.1.87:80/
    ProxyPassReverse / http://192.168.1.87/

    RequestHeader set X-Forwarded-Proto „https”
    RequestHeader set X-Forwarded-Port „443”

Acestea sunt anteturile de care are nevoie configurația proxy inversă din settings.php.

Puteți verifica prezența antetelor la www.mydomain.be/admin/reports/status/php in sectiunea Informații despre anteturile HTTP


Într-o astfel de configurare, folosirea antetelor X-Forward-* este abordarea generală pentru a permite Drupal să construiască legături absolute cu protocolul corect pentru a evita eroarea de conținut mixt.

Cu toate acestea, paginile Drupal pot fi construite complet cu link-uri relative și acesta este modul în care Drupal este configurat imediat, inclusiv câmpurile de completare automată de bază. Deci, puteți examina rutele de completare automată în codul contrib/personalizat și puteți elimina absolut opțiunea de a le face relative.


Redirecționare

Pentru a evita comentariile ulterioare, Drupal nu redirecționează, din nou.Redirecționarea nu este conectată la problemă, ci doar face mai dificilă depanarea. Este imposibil să știi de la distanță ce cod ai putea fi implementat și care redirecționează. De asemenea, s-ar putea ca redirecționările să fie încă stocate în cache, redirecționările permanente să fie stocate în cache timp de săptămâni, chiar dacă ați eliminat codul de redirecționare.

Baud avatar
drapel sa
Arată foarte bine!!! Voi testa asta în seara asta... abia aștept
4uk4 avatar
drapel cn
OK, atunci când testați, verificați rezultatul phpinfo() al site-ului dvs. Drupal înainte și după modificare. Vezi editarea.
Baud avatar
drapel sa
Din păcate, acest lucru nu funcționează (informații: antetul sunt setate în pagina de stare) => Am primit `ERR_TOO_MANY_REDIRECTS` pentru autocompletare. Există și `X-Forwarded-For` care este setat la `192.168.1.1`, nu știu dacă asta ar trebui să fie
4uk4 avatar
drapel cn
Acesta este IP-ul clientului, aveți nevoie și de acesta. Apache setează acest antet în mod implicit. Dar ce s-a întâmplat cu cei doi pe care i-am sugerat? Lipsește înainte și prezent după? Apoi eliminați orice alte hack-uri, ștergeți toate cache-urile, de asemenea, cache-ul browserului, reporniți toate serverele și încercați din nou.
Baud avatar
drapel sa
`X-Forwarded-Proto` este setat la `https` și `X-Forwarded-Port` este setat la 443 așa cum este afișat de `phpinfo()`.
Baud avatar
drapel sa
știți o modalitate de a urmări „prea multe” redirecționări? Este o chestiune Apache sau ar putea fi o problemă cu Drupal?
4uk4 avatar
drapel cn
Există prea multe redirecționări în acest subiect. Nu aveți nevoie de niciunul pentru a depana problema de conținut mixt, puteți conecta browserul cu proxy-ul prin https, introducându-l în bara de adrese. Depanați redirecționarea http->https pe proxy-ul edge atunci când orice altceva funcționează și apoi începeți cu 302s nepermanenți.
Baud avatar
drapel sa
Am citit de 10 ori ultimul tău comentariu, dar nu înțeleg... este complet criptic pentru mine. V-ar deranja să scrieți ideea dvs. în răspunsul dvs.? Toată configurația mea Apache este aici în postare, nu există altă redirecționare decât cea care redirecționează http la https. Nu știu ce este un „proxy Edge”
4uk4 avatar
drapel cn
Pentru a fi clar, trebuie să eliminați orice cod de redirecționare și să începeți de la capăt. Redirecționările permanente sunt foarte greu de depanat (cel mai enervant lucru pe care îl știu). Mai târziu (nu are legătură cu problema) puteți adăuga o redirecționare către proxy-ul invers (proxy-ul de pe marginea clientului) pentru a schimba automat http în https în bara de adrese.
Baud avatar
drapel sa
Vă mulțumesc, voi elimina redirecționarea permanentă în această seară (acesta este un site de testare care este live acum... L-aș putea face să funcționeze schimbând numărul portului și redirecționând traficul [folosind acest port] către serverul meu 87 cu ajutorul meu firewall... oamenii sunt de acord să folosească un alt port pentru un site de testare) dar pot lucra la el doar seara...
Baud avatar
drapel sa
Am eliminat TOATE configurațiile de pe serverul edge, cu excepția celui proxy descris la începutul acestei întrebări. Am înlocuit .htaccess cu cele originale și încă primesc prea multe redirecționări. Cum să știi de unde vine?

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.