http fejléc alapú tartalom kiszolgálás

Adott egy wordpress weboldal, amin szeretnének fejleszteni. Az új wordpress jó volna, ha azon a domainen működne amin az éles. Esetünkben a hosts file átírása és a fejlesztői környezetben futtatása nem megoldás, így a domain.tld címnek az éles szerveren kell átmennie. Azt találtam ki, hogy egy böngésző bővítménnyel fejlécet injektálunk, aminek ha dev az értéke, akkor az új, fejlesztés alatt álló tartalom jön be, ha stable, akkor a régi, nyilvánosan elérhető.

Nginx config az éles szerveren

upstream stable {
     server 127.0.0.1:8080;
}

upstream development {
     server 127.0.0.1:8081;
}

map $http_x_selector_header $pool {
     default "stable";
     stable "stable";
     dev "development";
}

server {
    listen 443 ssl http2;
    server_name domain.tld;
    
    ssl_certificate     certs/domain.tld.cert.pem;
    ssl_certificate_key certs/domain.tld.key.pem;
    
    location / {
        proxy_pass       http://$pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 127.0.0.1:8080;
    server_name domain.tld;
    
    # szokásos wp config
}

server {
    listen 127.0.0.1:8081;
    server_name domain.tld;
    
    # szokásos wp config
}

wp-config.php mindkét telepítésben

if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && 
    $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {

    $_SERVER['HTTPS'] = 'on';
    $_SERVER['SERVER_PORT'] = 443;
}

if (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

Esetünkben a fejlesztés alatt álló wordpress nem a production szerveren van és szabadon hozzáférnek a fájlokhoz.

Így a “fejlesztő” gépére közvetlenül nem kell semmit feltenni, tud mókolni a tartalommal, sablonnal és bővítményekkel. Ha elkészültek akkor a fejlesztés alatt álló wordpressről elég egy statikus másolatot készíteni és azt feltenni (szökőévente egyszer módosul rajta bármi, fölösleges mögé egy wordpress).

Fejléc injektálás

Chrome alatt az inssman csinálta azt amit szerettem volna. A többi vagy nagyon előfizetéses volt, vagy bugos.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.