利用Nginx在VPS部署你的hugo博客
前言
之前我的博客是部署在vecel平台的,并且绑定了自己的域名。但在今年10月份的某天,我发现博客已经无法在正常情况下访问,开启梯子后才可以访问,这样对于不会魔法上网的人来说访问的门槛的确有点高了。后来网上找了很多解决方案也解决不了,最后vercel主页网站了被DNS污染,也是无法正常访问,所以后来大概找到问题根源所在,如果你也遇到类似的问题,可以按照以下步骤解决:
1、把自己的域名托管在cloudfare,如果好不知道怎么把自己的托管在cloudfare的,可以参考我这篇文章:【文章链接】
2、把你指向vercel平台的DNS记录的小云朵打开(即利用cloudfare的cdn加速服务)
3、把SSL/TSL加密模式调整为:完全(严格),具体的路径如下:
通过的以上的设置就可以正常无魔法的情况下访问,虽然访问速度比以前差了一点。
自己刚好有一台闲置的vps主机,于是就折腾一下如何把自己的博客放在vps上,今次介绍的使用nginx服务来代理静态网页访问。
Nginx介绍
Nginx是一个高性能的开源Web服务器软件。它可以作为反向代理服务器,负载均衡器和HTTP缓存服务器使用。Nginx以其出色的性能和高度可扩展性而闻名,被广泛用于处理高并发的网络流量。它支持多种协议,包括HTTP、HTTPS、SMTP和POP3,并提供了丰富的功能和灵活的配置选项,使其成为许多网站和应用程序的首选服务器软件之一。在本次对话中,我们将使用Nginx来托管Hugo博客的静态文件。
配置Nginx步骤
1、安装Nginx
运行以下命令以更新软件包列表: 对于基于Debian/Ubuntu的系统:
sudo apt update
安装Nginx
sudo apt install nginx
Nginx会占用主机的80和443端口,前提前检查自己的vps有无被占用,由于我的vps实在全新的情况下安装nginx的,所以无任何报错。
2、启动Nginx服务
sudo service nginx start
3、验证Nginx是否已成功安装:
打开您的Web浏览器,并输入VPS的IP地址或域名。如果您看到Nginx的欢迎页面,则表示Nginx已成功安装并运行。
4、在root目录创建一个blog文件夹
sudo mkdir /blog
5、上传public文件夹
利用winscp登录自己vps主机,把压缩后的public文件夹上传至刚才创建好的blog文件夹。当然,这个步骤你也可以用scp和git,我介绍的是比较笨的的方法。
6、进入blog目录进行解压
cd /root/blog&& unzip public
7、修改Nginx配置文件
在配置Nginx之前记得提前将自己的域名添加一条A记录到自己的vps主机。我们下一步需要找到Nginx的配置文件。
nginx -v
输入上面指令后就会得到Nginx的配置文件路径,一般情况下会在/etc/nginx/nginx.conf这个目录下。 然后利用winscp这个软件找到这个配置文件并打开,打开后可以直接进行编辑,在配置文件的http模块下添加一个server块
server {
listen 80;
server_name your_domain_name; ## 你的域名
root /blog/public; ##如果你的路径跟我上面介绍一样去设置的可以按照这个路径
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
编辑完成后保存修改
安装SSL证书
sudo apt install certbot 安装certbot
sudo certbot --nginx -d example.com
这将使用Nginx插件自动配置和安装SSL证书。
Certbot将提示您提供相关信息,如电子邮件地址和域名。按照提示输入正确的信息。
Certbot将尝试与Let’s Encrypt服务器进行通信,并验证您拥有该域名的控制权。如果验证成功,Certbot将为您的域名颁发SSL证书并将其安装到Nginx配置中。
完成后,Certbot会显示证书的位置。您可以在Nginx配置文件中使用这些证书路径。
常见报错
1、The requested nginx plugin does not appear to be installed 解决方案:sudo apt install certbot python3-certbot-nginx
2、nginx: [warn] conflicting server name “example.com” on 0.0.0.0:443, ignored 这个警告消息表示在监听 0.0.0.0:443 的服务器块中存在相同的 server_name 参数值
解决方案:检查其他配置文件:除了主要的 Nginx 配置文件(通常是 /etc/nginx/nginx.conf),还需要检查其他可能引入的配置文件,例如在 nginx.conf 中通过 include 语句引入的其他文件。确保在所有配置文件中没有重复的 server_name 参数。
修改配置文件后输入以下指令来重新加载配置文件,若无报错即表示配置正确
sudo nginx -s reload
8、重启Nginx服务
sudo systemctl restart nginx
至此,你的博客已经部署到vps服务器可以通过刚才的绑定的域名进行访问,并且配置ssl证书。