Nginx 下构建 PC 站点

本文档整理了在 Nginx 下构建静态 PC 站点常用的配置与注意事项,重点说明 location 中 root 与 alias 的区别,并结合操作示例与调试命令,便于快速复现与排查。
目录
- 环境准备与目录组织
- 在 nginx.conf 中包含 conf.d
- 使用
root的示例与说明 - 使用
alias的示例与说明 - 常见问题与注意事项
- 推荐的 server 配置片段
- 调试与测试命令
1. 环境准备与目录组织
示例目录:
- 网站根目录:
/webdata/nginx/timinglee.org/lee/html - 在 conf 下使用
conf.d管理虚拟主机配置
bash
cd /usr/local/nginx/conf/
mkdir conf.d
# nginx.conf 中增加 include "/usr/local/nginx/conf/conf.d/*.conf";


bash
[root@Nginx conf] nginx -s reload
2. 在 nginx.conf 中包含 conf.d
在主配置文件中加入:
nginx
include "/usr/local/nginx/conf/conf.d/*.conf";
这样每个站点的配置可以放到 conf.d 目录里,便于管理。
重启/重载:
bash
systemctl restart nginx.service # 或 nginx -s reload
nginx -t # 检查配置语法
3. location 中的 root
root 的行为:Nginx 会把请求 URI(不去掉 location 前缀)拼接到 root 指定的路径后面,作为要读取的文件路径。
- 举例:
nginx
[root@Nginx conf.d] vim vhosts.conf
server {
listen 80;
server_name lee.timinglee.org;
location / {
root /webdata/nginx/timinglee.org/lee/html;
}
}
- 行为:
- 请求
/-> 文件系统路径/webdata/nginx/timinglee.org/lee/html/ - 请求
/lee/->/webdata/nginx/timinglee.org/lee/html
- 请求
操作示例(来自原笔记):
bash
[root@Nginx conf] cd conf.d/
[root@Nginx ~] mkdir -p /webdata/nginx/timinglee.org/lee/html
[root@Nginx ~] echo lee.timinglee.org > /webdata/nginx/timinglee.org/lee/html/index.html

bash
添加dns本地解析[root@Nginx conf.d] vim /etc/hosts
172.25.254.100 Nginx www.timinglee.org lee.timinglee.org


#测试
[root@Nginx conf.d] curl www.timinglee.org
timinglee
[root@Nginx conf.d] curl lee.timinglee.org
lee.timinglee.org

4. location 中的 alias(示例与说明)
alias 的行为:alias 用来替换 location 指定的部分路径,直接映射到目标路径(通常更灵活)。使用时需注意 / 的尾部处理(推荐 alias 路径以 / 结尾对应 location 也以 / 结尾)。
- 文件映射示例(将单个文件暴露为某个 uri):
nginx
[root@Nginx conf.d]# vim vhosts.conf
server {
listen 80;
server_name lee.timinglee.org;
location /passwd { #标识文件
alias /etc/passwd;
}
location /passwd/ { #表示目录
alias /mnt/;
}
}

#测试
[root@Nginx conf.d]# curl lee.timinglee.org/passwd/
passwd
[root@Nginx conf.d]# curl lee.timinglee.org/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

bash
[root@Nginx conf.d]# vim vhosts.conf
server {
listen 80;
server_name lee.timinglee.org;
location /passwd { #标识文件
alias /etc/passwd;
}
location /passwd/ { #表示目录
alias /mnt/;
}
}

[root@Nginx conf.d]# nginx -s reload
[root@Nginx conf.d]# echo passwd > /mnt/index.html
#测试
[root@Nginx conf.d]# curl lee.timinglee.org/passwd/
passwd
[root@Nginx conf.d]# curl lee.timinglee.org/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

注意:
location /a/ { alias /path/; }:请求/a/x->/path/xlocation /a { alias /path/file; }:通常用于把某个 URI 映射为单个文件- alias 必须小心尾部斜杠,否则可能导致路径拼接错误或 404
5. 常见问题与注意事项
-
root vs alias 区别:
- root 会把完整的请求 URI 拼接到 root 后:root + uri
- alias 会把 location 前缀替换为 alias 指定路径
-
尾斜杠:
location与alias的结尾斜杠要匹配使用习惯,避免路径错位 -
权限问题:确保 Nginx 进程用户对静态文件目录有读取权限
-
index 文件:没有显式
index时,访问目录会列出或返回 403,建议配置:nginxindex index.html index.htm; -
SPA(单页应用)场景:使用
try_files $uri $uri/ /index.html;来回退到入口页面 -
常用调试手段:查看 error.log、使用 curl 测试不同 URL、用
ls确认文件实际路径
6. 推荐的 server 配置片段(PC 站点)
nginx
server {
listen 80;
server_name lee.timinglee.org;
root /webdata/nginx/timinglee.org/lee/html;
index index.html index.htm;
# 简单的单页应用回退
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源单独处理(可选)
location /static/ {
alias /webdata/nginx/timinglee.org/lee/static/;
access_log off;
expires 7d;
}
# 单文件映射示例
location = /passwd {
alias /etc/passwd;
}
}
7. 调试与测试命令
bash
# 检查 nginx 配置
nginx -t
# 重载配置
nginx -s reload
systemctl restart nginx.service
# 本地 hosts 指向测试
# 编辑 /etc/hosts:
# 172.25.254.100 Nginx www.timinglee.org lee.timinglee.org
# 测试访问
curl www.timinglee.org
curl lee.timinglee.org
curl lee.timinglee.org/lee/
curl lee.timinglee.org/passwd
8. 小结与建议
-
小站点推荐使用
root并按 URI 组织目录;需要将请求前缀剥离并映射到不同目录时优先使用alias。 -
对 alias 的使用要格外注意尾部斜杠与 location 的写法,避免路径重复或缺失导致 404。
-
使用
try_files能显著改善单页应用与回退路由的支持。 -
在正式环境修改配置前,先在测试环境或本地通过
curl与日志验证行为是否符合预期。
url lee.timinglee.org/passwd
8. 小结与建议
- 小站点推荐使用
root并按 URI 组织目录;需要将请求前缀剥离并映射到不同目录时优先使用alias。 - 对 alias 的使用要格外注意尾部斜杠与 location 的写法,避免路径重复或缺失导致 404。
- 使用
try_files能显著改善单页应用与回退路由的支持。 - 在正式环境修改配置前,先在测试环境或本地通过
curl与日志验证行为是否符合预期。
- 小站点推荐使用