作者使用nginx+hexo搭建blog,由此总结nginx基础知识
[toc]
Nginx配置
前言 - 什么是反向代理?
Nginx
是一款高性能Web
服务器,可以实现反向代理。什么叫做反向代理
?实际上,我们正常的代理服务器是为客户机进行代理,来访问外部资源。而反向代理的服务器是将客户端的请求来转发到适当的后端服务器,因此可以实现负载均衡等功能。
本文将讲解Ubuntu20.04.1
下Nginx
的最基本配置,主要是在笔者搭建blog
的时候用到的相关知识。
Nginx快速配置
安装Nginx
查看Nginx
状态
1
| sudo systemctl status nginx
|
使用编写nginx
配置:
1
| vim /etc/nginx/sites-available/"your_sites"
|
例如,笔者的网站域名叫做ltfa1l.top
,因此上述命令为:
1
| vim /etc/nginx/sites-available/ltfa1l.top
|
Nginx
可以对本地服务器进行反向代理,也可以对本地静态文件进行托管。例如,我们知道Hexo
可以以hexo server
来启动本地服务器,也可以通过hexo generate
来生成静态文件。这两种方式的Nginx
配置分别如下所示:
1 2 3 4 5 6 7 8 9 10 11
| server { listen 80; server_name ltfa1l.top www.ltfa1l.top;
location / { proxy_pass http://localhost:4000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
|
和:
1 2 3 4 5 6 7 8 9 10 11
| server { listen 80; server_name ltfa1l.top ltfa1l.top;
location / { root /websites/public; index index.html; try_files $uri $uri/ =404; } }
|
创建符号链接,使得Nginx
能够使用刚刚编写的配置文件:
1
| sudo ln -s /etc/nginx/sites-available/"your_sites" /etc/nginx/sites/enabled/
|
例如笔者的命令是:
1
| sudo ln -s /etc/nginx/sites-available/ltfa1l.top /etc/nginx/sites/enabled/
|
完成对应的编写内容后,重新加载一下Nginx
:
1
| sudo systemctl reload nginx
|
有时候需要重启Nginx
:
1
| sudo systemctl restart nginx
|
到这里,我们就完成了Nginx
的所有基本配置了。
使用Let’s encrypt配置免费SSL
我们可以利用Let's encrypt
来配置免费的https
。
安装Certbot
:
1
| sudo apt install certbot python3-certbot-nginx
|
使用Certbot
获取并为Nginx
安装证书:
1
| sudo certbot --nginx -d ltfa1l.top www.ltfa1l.top
|
调整Nginx
配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| server { if ($host = ltfa1l.top) { return 301 https://$host$request_uri; }
listen 80; server_name ltfa1l.top www.ltfa1l.top;
location / { return 301 https://$host$request_uri; }
}
server { listen 443 ssl; server_name ltfa1l.top www.ltfa1l.top; ssl_certificate /etc/letsencrypt/live/ltfa1l.top/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ltfa1l.top/privkey.pem;
location / { root /websites/public; index index.html; try_files $uri $uri/ =404; }
}
|