Nginx 配置静态网站
静态网站指内容固定、无需后端计算的站点(HTML/CSS/JS/图片)。Nginx 处理静态文件是它的强项:配一个 server 块,指定根目录与首页即可上线。
最小 server 块
在 conf.d 下新建站点配置(如 /etc/nginx/conf.d/mysite.conf):
server {
listen 80;
server_name mysite.com www.mysite.com; # 多个域名用空格分隔
root /var/www/mysite; # 站点根目录(磁盘真实路径)
index index.html; # 默认首页(详见第 07 章)
location / {
try_files $uri $uri/ =404;
}
}
准备目录与首页并使其生效:
sudo mkdir -p /var/www/mysite
echo '<h1>我的第一个静态站点</h1>' | sudo tee /var/www/mysite/index.html
sudo nginx -t && sudo systemctl reload nginx
浏览器访问 http://服务器IP/mysite 对应的域名即可看到页面。
监听端口与 server_name
- listen 指定地址与端口:listen 80、listen 8080、listen 192.168.1.10:80 均可。
- server_name 匹配请求的 Host 头:支持精确域名、通配符(*.example.com)与正则(~^www..+.com$)。
- 没有 server_name 命中时,请求落入该端口上第一个 server(或显式声明的 default_server)。
用访问日志验证
请求是否真的由 Nginx 响应、命中了哪个站点,看访问日志最直观:
curl -I http://127.0.0.1/ # 先发起一次请求
tail -f /var/log/nginx/access.log # 观察新记录
# 输出:127.0.0.1 - - [10/Jan/2024:09:30:01 +0800] "GET / HTTP/1.1" 200 257 "-" "curl/8.5.0"
返回 200 且字节数大于 0 即说明站点正常服务。
location 中 root 与 alias 的区别
root 与 alias 都在 location 内指定文件来源,拼接规则却完全不同:
location /img/ { root /var/www/static; } # /img/a.png → /var/www/static/img/a.png
location /img/ { alias /var/www/pic/; } # /img/a.png → /var/www/pic/a.png
规律:root 把整段请求 URI 拼在目录后(URI 前缀原样保留);alias 用其值整体替换掉 location 匹配到的那段前缀。两者混用是最常见的路径 404 原因,第 06 章会再对比。
防盗链简述
不想让别的网站直接引用你的图片,可用 Referer 校验拦截非本站来源:
location ~* \.(png|jpg|jpeg|gif|webp)$ {
valid_referers none blocked *.mysite.com; # 允许空 Referer 与本站域名
if ($invalid_referer) {
return 403; # 盗链来源一律 403
}
}
小结:静态站点核心是 server + root + index 三件套;请求落到哪个文件由 root/alias 决定,是否被正确服务看 access.log 验证。想进一步精确控制 URL 与磁盘路径的对应关系,下一章学习 location 匹配规则。