86 lines
1.6 KiB
Markdown
86 lines
1.6 KiB
Markdown
---
|
|
title: "nginx"
|
|
tags: [ "Documentation", "networking" ]
|
|
---
|
|
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.
|
|
|