之前做过域名的配置,所以上手起来不是很麻烦,所以顺便做了
关于域名的购买、备案和 DNS 解析就不讲了,网络上一抓一大把,文章的重点在于“如何在一个服务器上分发多个域名?“
当前域名配置思路就三层:
- 外网只暴露 nginx 的 80 端口;nginx 根据 server_name = blog.rose7.cn 接住请求。
- Hugo 生成站点时,生产地址固定写成 http://blog.rose7.cn/,不再用 IP。
- nginx 不直接对外暴露站点目录,而是把请求转发到服务器内部的端口;这个内部端口再指向 /var/www/blog/current 这份当前发布版本。
核心思想在于利用 nginx 通过对域名的识别来分发请求到各个端口
具体的 nginx 配置文件如下
server {
listen 127.0.0.1:8081;
server_name _;
root /var/www/blog/current;
index index.html;
location / {
try_files $uri $uri/ $uri.html =404;
}
}
server {
listen 80;
listen [::]:80;
server_name blog.rose7.cn;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
处理流程是:
- 外部用户访问 blog.rose7.cn
- nginx 在 80 端口接住
- 再转发到本机内部博客运行端口,再从 /var/www/blog/current 读静态文件