Blog: Classier Twitter threads - Tag Linux

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: 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 ...

Automatické domény a subdomény s nginxem

server {
    listen          127.0.0.1:80;
    server_name     ~^(:?(?<second>.+)\.)?(?<domain>[^.]+\.[^.]+)$;
    index           index.php index.html;

    set             $try_dir $domain;
    if (-d /var/www/hosts/$second.$domain) {
        set     $try_dir $second.$domain;
    }
    root            /var/www/hosts/$try_dir;

    location / {
        try_files       $uri $uri/ /index.php;
    }

    keepalive_timeout  0;
    send_timeout    9999999;
    fastcgi_read_timeout    999999;
    client_max_body_size    200M;

    location ~ \.php$ {
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        include         fastcgi_params;
        fastcgi_param   SERVER_NAME     $try_dir;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;

        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param   PATH_INFO $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED $document_root$fastcgi_path_info;

        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;

        try_files $uri =404;
    }

    #location ~ \.(js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ { }

    location ~ /\.(ht|gitignore) {
        # deny access to .htaccess files,
        # if Apache's document root concurs with nginx's one
        deny all;
    }

    location ~ \.(neon|ini|log|yml)$ {
        # deny access to configuration files
        deny all;
    }

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /humans.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }
}

Zbytek je zde

Continue reading ...