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.