模式切换
静态文件服务器
配置静态资源服务器
通过 Nginx 配置静态资源服务器非常简单。Nginx 本身就是一个高效的静态资源服务器,非常适合用来分发 HTML、CSS、JS、图片等静态文件。以下是配置步骤和示例。
准备静态资源文件
首先,需要将静态资源文件(HTML、CSS、JavaScript、图片等)放在服务器的一个目录中。假设文件目录为 /var/www/static
,这个目录包含以下文件:
/var/www/static/
├── index.html
├── css/
│ └── styles.css
├── js/
│ └── app.js
└── images/
└── logo.png
Nginx 配置文件
接下来,通过 Nginx 配置文件指定如何处理这些静态文件请求。
Nginx 配置示例
你可以在 Nginx 的配置文件中(通常位于 /etc/nginx/nginx.conf
)或虚拟主机配置文件中(如 /etc/nginx/sites-available/default
)配置静态资源服务器。示例如下:
nginx
server {
# 监听的端口,通常是80端口用于HTTP
listen 80;
# 服务器域名或IP
server_name example.com;
# 定义静态文件的根目录
root /var/www/static;
# 默认访问的首页文件
index index.html;
# 匹配根路径,返回静态资源
location / {
# 指定资源目录
root /var/www/static;
# 如果目录下存在index.html文件,直接返回
index index.html;
}
# 定义错误页面,例如404页面
error_page 404 /404.html;
location = /404.html {
root /var/www/static;
}
# 静态资源缓存配置,针对 CSS、JS 等文件
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg)$ {
expires 30d; # 缓存30天
access_log off; # 不记录访问日志
}
}
配置详解
listen 80;
:指定服务器监听的端口,这里为 HTTP 默认的 80 端口。server_name example.com;
:指定服务器的域名或 IP 地址,可以用localhost
或服务器的实际域名。root /var/www/static;
:定义静态资源文件的根目录。这个路径应该是你放置 HTML、CSS、JS 文件的实际路径。index index.html;
:指定默认的首页文件,当用户访问根目录时会默认返回index.html
。location / { ... }
:匹配根路径的请求。指定root
为静态文件目录,同时配置index
以便默认返回index.html
。error_page 404 /404.html;
:配置自定义的 404 错误页面,当文件找不到时返回404.html
。expires 30d;
:针对 CSS、JS、图片等静态资源文件配置缓存,设置浏览器缓存时间为 30 天,以减少重复请求,提升加载速度。access_log off;
:关闭对这些静态文件的访问日志记录,以节省服务器日志文件的空间。
重启 Nginx
配置完成后,保存文件并通过以下命令检查配置是否正确:
bash
sudo nginx -t
如果没有错误,重启 Nginx 以应用配置:
bash
sudo systemctl restart nginx
访问静态资源服务器
在浏览器中访问 http://example.com
(或你服务器的域名/IP),如果配置正确,浏览器会显示你配置的静态资源页面。
进一步优化:Gzip 压缩
为进一步提升静态资源的加载速度,可以启用 Gzip 压缩,减少文件大小。配置如下:
nginx
http {
gzip on;
gzip_types text/css application/javascript application/json;
gzip_min_length 1024; # 小于1KB的文件不压缩
gzip_comp_level 6; # 压缩级别(1-9,值越大压缩效果越好,但CPU开销越高)
gzip_vary on;
}
这将开启对 CSS、JS 等资源的压缩传输,有效减少文件体积,加快加载速度。
通过上述配置,Nginx 就可以高效地作为静态资源服务器,处理并缓存 HTML、CSS、JavaScript 和其他资源。
设定默认根目录和 index.html
在 Nginx 中设置默认根目录和 index.html
文件,以及配置和查看日志非常重要。以下是具体操作步骤:
修改 Nginx 配置文件
Nginx 的默认配置文件通常在 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
,具体位置取决于你的系统和安装方式。
你可以为 Nginx 设置一个默认的根目录,并指定 index.html
作为默认首页。修改 server
块来配置根目录和默认的 index.html
。
示例配置
nginx
server {
listen 80; # 监听 80 端口
server_name example.com; # 服务器域名或IP
# 设置默认根目录
root /var/www/html; # 静态资源的根目录路径
index index.html index.htm; # 默认首页文件
# 根目录的配置
location / {
try_files $uri $uri/ =404; # 优先访问实际文件,如果不存在则返回 404
}
}
配置说明
root /var/www/html;
:设置默认的根目录为/var/www/html
,所有的静态文件都应该存放在这个目录中。index index.html index.htm;
:指定默认的首页文件,如果用户访问根路径(如http://example.com
),会默认返回index.html
或index.htm
文件。try_files $uri $uri/ =404;
:让 Nginx 尝试按请求的 URI 查找对应文件,如果找不到则返回 404 错误页面。
Nginx 日志配置
Nginx 主要有两种日志文件:
- 访问日志(Access Log):记录所有用户访问请求的详细信息。
- 错误日志(Error Log):记录 Nginx 的错误信息,包括访问出错、服务问题等。
配置访问日志和错误日志
在 nginx.conf
或虚拟主机配置文件中,通过 access_log
和 error_log
指令配置日志文件路径和日志级别。
日志配置示例
nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
# 访问日志配置
access_log /var/log/nginx/access.log main;
# 错误日志配置,指定日志级别
error_log /var/log/nginx/error.log warn;
location / {
try_files $uri $uri/ =404;
}
}
日志配置说明
access_log /var/log/nginx/access.log main;
:将访问日志保存到/var/log/nginx/access.log
文件中,main
是日志格式的名称(可以在http {}
区域定义日志格式)。error_log /var/log/nginx/error.log warn;
:将错误日志保存到/var/log/nginx/error.log
文件中,日志级别为warn
。Nginx 的错误日志有多个级别:debug
、info
、notice
、warn
、error
、crit
等。
定义自定义访问日志格式
你可以在 http {}
块中定义访问日志的格式,然后在 server {}
或 location {}
块中引用该格式。
nginx
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include /etc/nginx/conf.d/*.conf;
}
log_format
:定义日志格式,可以自定义记录的字段信息,例如客户端 IP 地址、用户代理、响应状态等。main
:是格式名称,可以在access_log
指令中使用。
查看 Nginx 日志
日志文件默认保存在 /var/log/nginx/
目录下,通常有两个文件:
- 访问日志:
/var/log/nginx/access.log
- 错误日志:
/var/log/nginx/error.log
使用命令查看日志
查看访问日志:
bashtail -f /var/log/nginx/access.log
这个命令会实时显示 Nginx 的访问日志。
tail -f
会持续输出新写入的日志内容。查看错误日志:
bashtail -f /var/log/nginx/error.log
这个命令会实时显示 Nginx 的错误日志,非常有助于调试和排查问题。
日志文件的轮转和管理
如果 Nginx 运行时间较长,日志文件会变得非常大。你可以使用 logrotate
工具对日志文件进行自动轮转,避免日志文件过大导致系统资源问题。
- 配置文件通常位于
/etc/logrotate.d/nginx
,配置如下:
bash
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
配置说明
daily
:每天轮转日志文件。rotate 14
:保存最近 14 天的日志,超过的会自动删除。compress
:对老的日志文件进行压缩,节省磁盘空间。postrotate
:每次轮转后发送信号USR1
给 Nginx 进程,通知它重新打开日志文件。
通过以上步骤,你可以完成 Nginx 日志的配置和管理,并通过查看日志来监控和调试 Nginx 的运行状态。