Nginx 基础 Web 服务配置
Web 服务是 Nginx 最基础也是最重要的功能之一。无论是托管静态网站、提供 API 服务,还是作为反向代理,都离不开基础 Web 服务配置。
学习目标
- 掌握静态资源托管的完整配置方法
- 理解多虚拟主机的配置原理和实现
- 熟练掌握 URL 匹配规则和路由机制
- 学会配置默认页面和错误页面
- 掌握基础的安全配置和访问控制
1. 静态资源托管
1.1 静态资源托管基础
静态资源托管是 Nginx 的核心功能之一,包括 HTML、CSS、JavaScript、图片、视频等各种静态文件的提供。
server {
listen 80;
server_name example.com;
# 基础静态资源托管
location / {
root /var/www/html;
index index.html index.htm;
}
}
1.2 root vs alias 指令详解
这是初学者最容易混淆的概念,以下是区别示例:
# root 指令 - 将请求路径附加到根目录后面
server {
listen 80;
server_name example.com;
location /static/ {
root /var/www;
# 请求 /static/images/logo.png
# 实际访问 /var/www/static/images/logo.png
}
}
# alias 指令 - 将 location 路径替换为指定目录
server {
listen 80;
server_name example.com;
location /static/ {
alias /var/www/images/;
# 请求 /static/images/logo.png
# 实际访问 /var/www/images/images/logo.png
# 如果想访问 /var/www/images/logo.png,应该这样配置:
# alias /var/www/images;
}
location /css/ {
alias /var/www/stylesheets/;
# 请求 /css/main.css
# 实际访问 /var/www/stylesheets/main.css
}
}
1.3 静态资源优化配置
server {
listen 80;
server_name example.com;
root /var/www/html;
# HTML 页面配置
location ~* \.html$ {
expires 1h;
add_header Cache-Control "public, must-revalidate";
}
# CSS/JS 文件长期缓存
location ~* \.(css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
access_log off;
}
# 图片文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public";
}
# 字体文件配置
location ~* \.(woff|woff2|ttf|eot)$ {
expires 1y;
add_header Access-Control-Allow-Origin *;
add_header Cache-Control "public";
}
# 防止访问隐藏文件
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
1.4 静态资源托管性能优化
server {
listen 80;
server_name example.com;
root /var/www/html;
# 启用 sendfile,提高文件传输效率
sendfile on;
tcp_nopush on;
tcp_nodelay on;
# 文件缓冲区优化
location / {
# 客户端请求体缓冲区
client_body_buffer_size 128k;
# 代理缓冲区配置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
# 文件缓存配置
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
}


