Vraag


Acties:
  • 0 Henk 'm!

  • Leaplasher
  • Registratie: Maart 2025
  • Niet online
Ben een poging aan het wagen om Wordpress & Nginx op docker aan de praat te krijgen. Via HTTPS.
Met als doel een bestaande site, zelf te gaan hosten.

Beide containers draaien.
Kan zowel wordpress als nginx via HTTP benaderen op IP basis van de VM waar docker op draait.
Wordpress uiteraard op een eigen poort.

In Nginx heb ik ook een *.example.com wildcard certificaat aan de proxy host gehangen (deze luisterd naar sudomain.example.com. Ook dat werkt en ik kom via https://subdomain.example.com op de site uit. (voor nu nog even via een hosts file, 't staat nog niet public).
Voor deze site heb ik als Nginx proxy host ingesteld: http + <docker container naam> + port 80
Niet het IP van de host of de gemapte poort, direct de naam van de container.

Wordpress zelf draait dus op HTTP in z'n eigen container.
Geen HTTPS, lees ook overal dat dat niet nodig is met een reverse proxy er tussen.
Dat geeft helaas wel geeft issues, omdat sommige content blijkbaar alsnog over HTTP wordt geserveerd ipv HTTPS.
Waardoor de site deels instort. Logisch, want HSTS staat ook aan voor dit domein.

Wat ik verder zie, is dat in de Wordpress Admin backend, het site url met HTTP staat geconfigureerd.
Ergens logisch, want Wordpress zelf, weet niet beter. Wanneer ik dat wijzig naar HTTPS, wordt de site onbereikbaar en mag ik 't in de database weer ongedaan maken.

Het lijkt erop dat sommige plugins/thema van de site, het homepage/site url gebruiken om een URL samen te stellen. 't staat iig niet hard-coded in de content die ik erop zet. De site zoals die nu nog bij een host staat, heeft dit issue niet. 't zit em dus in de gemigreerde setup.

Heb deze site nog gelezen om te checken of 't van toepassing is: https://wordpress.org/sup...sl/#using-a-reverse-proxy
Hier wordt aan gerefereerd, en stond al in de config vanuit 't docker image.

code:
1
2
3
4
5
6
define( 'FORCE_SSL_ADMIN', true );
// in some setups HTTP_X_FORWARDED_PROTO might contain 
// a comma-separated list e.g. http,https
// so check for https existence
if( strpos( $_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false )
    $_SERVER['HTTPS'] = 'on';


Er staat vervolgens ook nog wat over iets wat je in nginx mag opvoeren.
Heb deze tot nu toe via de GUI ingericht en na wat zoeken vond ik in
/dockervolumes/nginx/nginx/proxy_host een config file waar de volgende code in thuis lijkt te horen.

code:
1
2
3
4
5
6
7
8
9
location / {
    proxy_pass http://your_host_name:your_port;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
}


Het meeste daarvan zit al in de default config, aldus de git.
Ref: https://github.com/NginxP...conf.d/include/proxy.conf

Blijven deze regels over:
code:
1
2
proxy_set_header X-Forwarded-Host $server_name;
    proxy_redirect off;


welke ik aan de proxy-host config file voor deze site heb toegevoegd.
Helaas, zonder succes.

Heb geen caching plugins draaien en test ook alles via een inprivate sessie.


Wie oh wie heeft een tip voor me?
Staar me hier al een paar dagen op blind.