Blog: Classier Twitter threads - Tag NGINX

Kompletní nastavení HTTPS, SPDY, IPv6 a HSTS pro Nginx

Následující článek rozhodně není “tohle je jediná správná cesta a takhle to dělejte”. Píšu ho hlavně proto, že za měsíc nebo za rok budu nasazovat HTTPS na další weby a budu zase googlit jak jsem to dělal před rokem :)

Nelekejte se délky, článek je ve skutečnosti krátký, jenom obsahuje hodně kódu a obrázků. Celé je to velice jednoduché :)

Continue reading ...

Nginx a SSL přesměrování pro všechny subdomény

Jak nastavit SSL pro nginx je krásně popsané v dokumentaci. Co mě ale zarazilo, tak že jsem nenašel jak přesměrovat všechny subdomény a jejich requesty na sebe sama ale pod HTTPS. Respektive, našel jsem jedno relevantní vlánko na serverfault, ale to nefunguje jak potřebuju.

Když použiju

server_name     kdyby.org *.kdyby.org;
return          301 https://$servername$request_uri;

tak to se mi to nedařilo přinutit přesměrovávat help.kdyby.org na https://help.kdyby.org, místo toho to skákalo na https://kdyby.org a házelo chyby. Proměnná $server_name totiž obsahuje první doménu, co jí nastavíte (v tomhle případě kdyby.org).

Jediné co mi fungovalo, tak použít regulární výrazy a přidat si vlastní proměnnou.

server {
        listen          80;
        server_name     ~^(?<servername>(:?.+\.)?kdyby.org)$;
        return          301 https://$servername$request_uri;
}

server {
        listen          443 default ssl;

        # ...
}

Doufám, že na to existuje lepší řešení (jestli víte, podělte se prosím v komentářích), ale tohle je dostatečně funkční, takže za mě fuck it :)

UPDATE: když jsem projížděl dokumentaci poprvé, tak jsem přehlédl proměnnou $host, na kterou mě teď upozornil @tomasfejfar, díky!

Řešení je tedy následující

server {
        listen          80;
        server_name     kdyby.org *.kdyby.org;
        return          301 https://$host$request_uri;
}

server {
        listen          443 default ssl;

        # ...
}

Continue reading ...

NGINX: kódování statických souborů

Pokud máte na serveru “nějaké statické soubory”:/humans.txt, může se stát, že prohlížeč vám z nich udělá rozsypaný čaj, protože mu neposíláte kódování a on si tipne špatně.

Nejsnadnější řešení s NGINXem je vnutit mu výchozí kódování

http {
    ...
    charset utf-8;
    ...
}

Teď už to funguje správně

$ curl -v https://filip-prochazka.com/humans.txt
...
< Content-Type: text/plain; charset=utf-8

Continue reading ...