From 1e76441969b3454f7190d7c310f3956f4efd5311 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Tue, 9 Feb 2021 04:00:52 +0100 Subject: [PATCH] add nginx notes --- networking/website/nginx.md | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 networking/website/nginx.md diff --git a/networking/website/nginx.md b/networking/website/nginx.md new file mode 100644 index 0000000..4262194 --- /dev/null +++ b/networking/website/nginx.md @@ -0,0 +1,81 @@ +Install nginx: + +> sudo apt-get install nginx + +> sudo apt-get enable --now nginx + +Put a website somewhere: + +> mkdir /var/www/html/mysite/ + +Put an index file there: + +> vim /var/www/html/mysite/index.html + +Make the owner `www-data` + +> chown -R www-data:www-data /var/www/html/mysite/ + +Make a configuration file for nginx: + +> vim /etc/nginx/sites-available/mysite.conf + + +``` +server { + listen 80; + listen [::]:80; + root /var/www/html/mysite; + index index.html index.htm; + server_name mysite.tk; + + location / { + try_files $uri $uri/ =404; + } + +}``` + +Make the site available: + +> ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/ + +Test it's working: + +> nginx -t + +## Troubleshooting + +If it's not working, the error message ends with the line number of the problem in the .conf file. +If the error message says '4', the error message is probably around line 4. + +Check: + +- Missing semicolons +- Very long website names + * Fixing this requires uncommenting `server_names_hash_bucket_size 64;` in /etc/nginx.conf + * If that doesn't work, try changing '64' in that line to '128'. + +## DNS + +Buy some DNS online, then check it's working. + +*Once it's working*, use certbot: + +> apt install certbot + +You may need to install an nginx python module: + +> apt install python3-certbot-nginx + +> certbot --nginx -d mysite.tk + +When you are asked about redirecting from HTTP to HTTPS, say yes (option "2"). + +## Renewal + +Remember to renew the certificate every few months. + +# Multiple Sites + +You can do this with any number of websites at the same time. +