Tak vy ještě nemáte HTTPS a HTTP/2?!

Vojta Tranta
Dec 26, 2015 · 7 min read

Nginx

HTTP/2

SSL

Letsencrypt all that shit


Super, jdeme to rozjet!

VPS

$ ssh username@ipOrDomain

Instalace Nginxu

$ sudo apt-get install nginx
$ sudo vi /etc/apt/sources.list
deb http://nginx.org/packages/mainline/debian/ codename nginx
deb-src http://nginx.org/packages/mainline/debian/ codename nginx
$ lsb_release -c
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
$ cd /tmp/ && wget http://nginx.org/keys/nginx_signing.key
$ sudo apt-key add nginx_signing.key
$ sudo apt-get update
$ sudo apt-get install nginx
$ nginx -v
//spustit nginx i když už sám zřejmě poběží
$ sudo service nginx start
//ověření, že nginx jede
$ wget localhost //měl by se stáhnout soubor index.html, kde bude
//napsáno welcome to nginx
//pokud nginx neběží, asi se šermuje s Apachem - ten je potřeba //smazat, to už dáte sami

Letsencrypt.org

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
//nginx blokuje port 80 a 443, které používá LE, je třeba ho //pozastavit
$ sudo service nginx stop
$ ./letsencrypt-auto certonly

Konfigurace Nginxu pro SSL a HTTP/2

$ cd ~
$ touch nginx.conf
//vytvoříme symlink do konfiguračního adresáře nginxu
$ sudo ln -sf ~/nginx.conf /etc/nginx/conf.d/
// otevřeme si konfigurák
$ vi nginx.conf
# posloucháme na portu 80 když přijde request na doménu 
# www.krejcovapraha.cz, jakmile přijde, přesměrujeme na HTTPS
# variantu bez www. Použijte samozřejmě všude vlastní doménu.
server {
listen 80;
server_name www.krejcovapraha.cz;
return 301 https://krejcovapraha.cz$request_uri;
}
# to samé co výše, jen bez www. (určitě to jde líp, nevim jak,
# napište)
server {
listen 80;
server_name krejcovapraha.cz;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2; #tady se děje magie
# vaše cesta k certifikát bude obdobná, jen vyměňte název domény
ssl_certificate /etc/letsencrypt/live/krejcovapraha.cz/fullchain.pem;
# cesta ke klíči - obdobná jako výše
ssl_certificate_key /etc/letsencrypt/live/krejcovapraha.cz/privkey.pem;
server_name krejcovapraha.cz;charset utf-8;# klasický document root webu
root /home/ubuntu/cesta/k/rootu/krejcova/web;
index index.php index.html index.htm;
# cesta k logům musí existovat, nezapomeňte je vytvořit
access_log /home/ubuntu/cesta/k/rootu/krejcova/log/access.log;
error_log /home/ubuntu/cesta/k/rootu/krejcova/log/error.log;
# konfigurace pro .php soubory, více zde https://filip-prochazka.com/blog/nginx-https-spdy-hsts-security
location / {
try_files $uri $uri/ /index.html;
autoindex on;
}
#gzip nastavení neškodné, nemělo by shodit server
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml text/css application/x-javascript application/javascript text/javascript;
# cache pro statické soubory, též neškodné
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|svg)$ {
access_log off;
expires 30d;
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
add_header Pragma public;
add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
$ sudo service nginx restart

Vojta Tranta

Written by

Kretén, webový vývojář...

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade