add nginx notes
This commit is contained in:
		
							
								
								
									
										81
									
								
								networking/website/nginx.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								networking/website/nginx.md
									
									
									
									
									
										Normal file
									
								
							| @@ -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. | ||||
|  | ||||
		Reference in New Issue
	
	Block a user