Nginx 配置文件位置详解

Nginx 配置文件位置详解

在使用 Nginx 作为 Web 服务器时,了解配置文件的位置和结构非常重要。这篇文章将详细介绍 Nginx 配置文件的各个位置及其用途。

📁 配置文件位置总览

文件类型 路径 用途
主配置文件 /etc/nginx/nginx.conf Nginx 全局配置
站点配置(可用) /etc/nginx/sites-available/ 存放所有站点配置
站点配置(启用) /etc/nginx/sites-enabled/ 符号链接到启用的站点
SSL 证书配置 /etc/nginx/ssl/ SSL/TLS 证书文件
模块配置 /etc/nginx/modules-enabled/ 启用的模块
日志文件 /var/log/nginx/ 访问日志和错误日志

🔍 主配置文件:nginx.conf

这是 Nginx 的核心配置文件,位置:

1
/etc/nginx/nginx.conf

查看主配置

1
cat /etc/nginx/nginx.conf

主要配置项

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
user www-data;              # 运行用户
worker_processes auto; # 工作进程数
pid /run/nginx.pid; # PID 文件位置

events {
worker_connections 768; # 最大连接数
}

http {
# 基本设置
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

# 日志格式
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;

# 包含其他配置文件
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

🌐 站点配置文件

sites-available 目录

存放所有可用的站点配置:

1
/etc/nginx/sites-available/

常见文件:

  • default - 默认站点配置
  • hexo-blog - 自定义站点配置(如你的博客)

sites-enabled 目录

存放已启用的站点配置(通常是符号链接):

1
/etc/nginx/sites-enabled/

查看站点配置

1
2
3
4
5
6
7
8
# 列出所有可用站点
ls -la /etc/nginx/sites-available/

# 列出已启用站点
ls -la /etc/nginx/sites-enabled/

# 查看具体配置
cat /etc/nginx/sites-available/hexo-blog

📄 我的博客配置示例

这是我的 Hexo 博客使用的 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
server {
listen 80;
listen [::]:80;

server_name _;

root /var/www/hexo-blog;
index index.html;

location / {
try_files $uri $uri/ =404;
}

# 缓存静态文件
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}

# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}

配置说明

指令 说明
listen 80 监听 80 端口(HTTP)
server_name _ 匹配所有域名
root 网站根目录
index 默认首页文件
location / 根路径处理规则
try_files 尝试访问文件,不存在返回 404

🔧 常用管理命令

测试配置

1
sudo nginx -t

输出示例:

1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

查看完整配置

1
sudo nginx -T

这会输出所有配置文件的完整内容。

重载配置

修改配置后,重载 Nginx:

1
sudo systemctl reload nginx

重启 Nginx

1
sudo systemctl restart nginx

检查状态

1
sudo systemctl status nginx

📝 添加新站点的步骤

1. 创建配置文件

1
sudo nano /etc/nginx/sites-available/my-site

2. 编写配置

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name example.com www.example.com;
root /var/www/my-site;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}

3. 启用站点

1
sudo ln -s /etc/nginx/sites-available/my-site /etc/nginx/sites-enabled/

4. 删除默认配置(可选)

1
sudo rm /etc/nginx/sites-enabled/default

5. 测试并重载

1
2
sudo nginx -t
sudo systemctl reload nginx

🗂️ 目录结构图

1
2
3
4
5
6
7
8
9
10
/etc/nginx/
├── nginx.conf # 主配置文件
├── sites-available/ # 可用站点配置
│ ├── default
│ └── hexo-blog
├── sites-enabled/ # 已启用站点(符号链接)
│ └── hexo-blog -> ../sites-available/hexo-blog
├── conf.d/ # 额外配置文件
├── modules-enabled/ # 已启用模块
└── modules-available/ # 可用模块

📊 日志文件位置

Nginx 日志对于排查问题非常重要:

1
2
3
4
5
6
7
8
# 访问日志
/var/log/nginx/access.log

# 错误日志
/var/log/nginx/error.log

# 实时查看日志
sudo tail -f /var/log/nginx/error.log

查看日志

1
2
3
4
5
6
7
8
# 查看最近 50 行
sudo tail -50 /var/log/nginx/access.log

# 实时跟踪日志
sudo tail -f /var/log/nginx/access.log

# 搜索特定内容
sudo grep "404" /var/log/nginx/access.log

⚠️ 常见问题

1. 配置修改后不生效

原因:没有重载 Nginx

解决

1
2
sudo nginx -t          # 先测试配置
sudo systemctl reload nginx

2. 权限错误

原因:Nginx 用户无法访问网站目录

解决

1
2
sudo chown -R www-data:www-data /var/www/hexo-blog
sudo chmod -R 755 /var/www/hexo-blog

3. 端口被占用

原因:80 端口已被其他程序占用

解决

1
2
sudo lsof -i :80
sudo netstat -tlnp | grep :80

4. 符号链接错误

原因:sites-enabled 中的链接不正确

解决

1
2
3
4
5
# 删除错误链接
sudo rm /etc/nginx/sites-enabled/wrong-config

# 重新创建正确链接
sudo ln -s /etc/nginx/sites-available/hexo-blog /etc/nginx/sites-enabled/

🔐 配置 HTTPS(可选)

使用 Let’s Encrypt 免费 SSL 证书:

安装 Certbot

1
sudo apt install certbot python3-certbot-nginx

获取证书

1
sudo certbot --nginx -d example.com -d www.example.com

配置会自动更新

Certbot 会自动修改 Nginx 配置,添加 HTTPS 支持。

自动续期

1
2
3
4
5
# 测试续期
sudo certbot renew --dry-run

# 设置定时任务(通常已自动配置)
sudo systemctl list-timers | grep certbot

💡 最佳实践

  1. 修改前先备份

    1
    sudo cp /etc/nginx/sites-available/hexo-blog /etc/nginx/sites-available/hexo-blog.bak
  2. 测试后再重载

    1
    sudo nginx -t && sudo systemctl reload nginx
  3. 使用有意义的文件名

    • hexo-blog
    • config1
  4. 定期检查日志

    1
    sudo tail -100 /var/log/nginx/error.log
  5. 保持配置简洁

    • 一个站点一个配置文件
    • 使用注释说明复杂配置

📚 相关资源


总结

Nginx 配置文件位置总结:

用途 文件路径
主配置 /etc/nginx/nginx.conf
站点配置 /etc/nginx/sites-available/
已启用站点 /etc/nginx/sites-enabled/
日志文件 /var/log/nginx/

记住这三个关键命令:

1
2
3
sudo nginx -t              # 测试配置
sudo systemctl reload nginx # 重载配置
sudo tail -f /var/log/nginx/error.log # 查看错误日志

希望这篇文章能帮助你更好地理解和管理 Nginx 配置!


Happy Configuring! 🔧

如何使用 Hexo + Nginx 搭建个人博客

如何使用 Hexo + Nginx 搭建个人博客

在这篇文章中,我将详细介绍如何使用 Hexo 和 Nginx 搭建一个可以在 80 端口访问的个人博客网站。

为什么选择 Hexo?

Hexo 是一个快速、简洁且高效的博客框架,具有以下优点:

  1. 极速生成 - 基于 Node.js,秒级生成静态文件
  2. Markdown 支持 - 使用 Markdown 编写文章
  3. 无需数据库 - 纯静态文件,部署简单
  4. 主题丰富 - 大量精美主题可选
  5. 免费开源 - 完全免费,社区活跃

环境要求

  • Node.js 12.0 或更高版本
  • npm 包管理器
  • Nginx Web 服务器
  • Linux 服务器(本教程使用 Ubuntu)

第一步:安装 Node.js 和 npm

检查是否已安装:

1
2
node --version
npm --version

如果未安装,可以使用以下命令安装:

1
2
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs

第二步:安装 Hexo CLI

使用 npm 全局安装 Hexo 命令行工具:

1
npm install -g hexo-cli

安装完成后,验证安装:

1
hexo -v

第三步:创建博客目录

选择一个目录来存放你的博客文件:

1
2
mkdir -p /root/.openclaw/workspace/hexo-blog
cd /root/.openclaw/workspace/hexo-blog

第四步:初始化 Hexo 博客

在博客目录中初始化 Hexo:

1
hexo init .

这个命令会:

  • 克隆 Hexo 博客模板
  • 安装所有依赖
  • 创建必要的目录结构

初始化完成后,目录结构如下:

1
2
3
4
5
6
7
8
9
hexo-blog/
├── source/ # 源文件目录
│ ├── _posts/ # 文章目录
│ └── _data/ # 数据文件
├── themes/ # 主题目录
├── scaffolds/ # 文章模板
├── _config.yml # 站点配置文件
├── package.json # 项目依赖
└── ...

第五步:安装 Nginx

1
2
sudo apt update
sudo apt install -y nginx

安装完成后,启动 Nginx:

1
2
sudo systemctl start nginx
sudo systemctl enable nginx

第六步:生成静态文件

在博客目录中生成静态文件:

1
2
cd /root/.openclaw/workspace/hexo-blog
hexo generate

或使用简写:

1
hexo g

生成的文件会保存在 public/ 目录中。

第七步:配置 Nginx

创建 Nginx 配置文件:

1
sudo nano /etc/nginx/sites-available/hexo-blog

添加以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
listen [::]:80;

server_name _;

root /var/www/hexo-blog;
index index.html;

location / {
try_files $uri $uri/ =404;
}

# 缓存静态文件
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}

# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}

第八步:部署到 Nginx

复制生成的文件到 Nginx 目录:

1
2
sudo cp -r public/* /var/www/hexo-blog/
sudo chown -R www-data:www-data /var/www/hexo-blog/

启用站点配置:

1
2
sudo ln -sf /etc/nginx/sites-available/hexo-blog /etc/nginx/sites-enabled/hexo-blog
sudo rm -f /etc/nginx/sites-enabled/default

测试配置并重载 Nginx:

1
2
sudo nginx -t
sudo systemctl reload nginx

第九步:验证访问

打开浏览器访问你的服务器 IP:

1
http://YOUR_SERVER_IP/

如果看到博客首页,说明搭建成功!

创建第一篇文章

方法一:使用命令创建

1
hexo new post "My First Post"

文章会创建在 source/_posts/my-first-post.md

方法二:直接创建文件

source/_posts/ 目录中创建 .md 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
title: 我的第一篇博客
date: 2026-03-02 13:00:00
tags:
- Welcome
categories:
- Life
---

# 你好,世界!

这是我的第一篇博客文章。

## 关于这个博客

这个博客使用 Hexo 和 Nginx 搭建...

发布文章

编辑完文章后,重新生成并发布:

1
2
3
4
5
6
# 生成静态文件
hexo generate

# 复制到 Nginx 目录
sudo cp -r public/* /var/www/hexo-blog/
sudo chown -R www-data:www-data /var/www/hexo-blog/

简化管理脚本

为了方便管理,我创建了一个 blog.sh 脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

HEXO_DIR="/root/.openclaw/workspace/hexo-blog"
PUBLIC_DIR="/var/www/hexo-blog"

case "$1" in
new)
cd $HEXO_DIR && hexo new post "$2"
;;
deploy|d)
cd $HEXO_DIR && hexo generate
sudo cp -r $HEXO_DIR/public/* $PUBLIC_DIR/
sudo chown -R www-data:www-data $PUBLIC_DIR
echo "Deployed!"
;;
clean)
cd $HEXO_DIR && hexo clean
;;
*)
echo "Usage: $0 {new|deploy|clean}"
;;
esac

使用方法:

1
2
3
4
5
6
7
8
# 创建新文章
./blog.sh new "文章标题"

# 发布到网站
./blog.sh deploy

# 清理缓存
./blog.sh clean

更换主题

Hexo 有很多漂亮的主题可选。以 Next 主题为例:

1
2
3
4
5
# 克隆主题
git clone https://github.com/next-theme/hexo-theme-next themes/next

# 修改配置文件
nano _config.yml

_config.yml 中修改:

1
theme: next

重新生成即可:

1
2
hexo generate
sudo cp -r public/* /var/www/hexo-blog/

常用命令总结

命令 说明
hexo new post "标题" 创建新文章
hexo generatehexo g 生成静态文件
hexo serverhexo s 本地预览(端口 4000)
hexo clean 清理缓存
hexo deployhexo d 部署(需配置)

配置文件说明

_config.yml(站点配置)

主要配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 站点信息
title: 我的博客
subtitle: 分享技术和生活
description: 这是我的个人博客
author: 你的名字
language: zh-CN

# URL 设置
url: http://yourdomain.com
root: /
permalink: :year/:month/:day/:title/

# 文章设置
posts_dir: source/_posts
new_post_name: :title.md

# 主题
theme: landscape

source/_posts/(文章目录)

所有文章都以 Markdown 格式存储在这里。

常见问题

1. 端口 80 无法访问

检查 Nginx 状态:

1
sudo systemctl status nginx

检查防火墙:

1
2
sudo ufw status
sudo ufw allow 80/tcp

2. 文章不显示

重新生成:

1
2
hexo clean
hexo generate

检查文章格式:
确保文章开头有正确的 Front-matter:

1
2
3
4
---
title: 文章标题
date: 2026-03-02 13:00:00
---

3. 图片无法显示

将图片放在 source/images/ 目录,然后在文章中使用:

1
![图片描述](/images/photo.jpg)

进阶配置

启用 Gzip 压缩

在 Nginx 配置中添加:

1
2
3
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;

配置 HTTPS

使用 Let’s Encrypt 免费 SSL 证书:

1
2
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

自动部署

配置 Git hooks 或使用 CI/CD 工具实现自动部署。

总结

使用 Hexo + Nginx 搭建博客的优势:

快速 - 静态文件,加载速度快
简单 - 无需数据库,维护成本低
便宜 - 任何便宜的 VPS 都能运行
安全 - 静态网站,攻击面小
灵活 - 主题和插件丰富

整个搭建过程大约需要 15-30 分钟,非常适合想要搭建个人博客的朋友。


Happy Blogging! 🎉

如果你觉得这篇文章有帮助,欢迎分享给更多人!

Hello Hexo Blog!

Welcome to My Blog!

This is my first post on the new Hexo blog! 🎉

About This Blog

I just set up this blog using Hexo and Nginx. It’s a fast, static blog that can be accessed at:

Why Hexo?

I chose Hexo because:

  1. Fast - Static files served by Nginx
  2. Simple - Write posts in Markdown
  3. Lightweight - No database needed
  4. Customizable - Many themes available
  5. Free - Open source and free to use

What to Expect

I’ll be writing about:

  • Technology and programming
  • Daily life and thoughts
  • Travel experiences
  • Learning notes

Stay Tuned!

More posts coming soon. Thanks for visiting!


Posted with ❤️ using Hexo