nginx 部署项目指向静态资源
时间: 2024-12-30 12:26:23 浏览: 8
### 配置 Nginx 部署项目并正确指向静态资源
为了使 Nginx 正确加载静态文件,需要合理配置 `location` 和 `root` 或者 `alias` 指令来确保请求能够被正确路由到对应的物理路径下。
#### 使用 Root 指定根目录
当使用 `root` 指令时,Nginx 将会把 URL 中的路径附加到由 `root` 定义的基础路径之后形成完整的文件系统路径。例如:
```nginx
server {
listen 80;
server_name example.com;
location /static/ {
root /var/www/example/;
index index.html index.htm;
}
}
```
在这个例子中,如果客户端尝试访问 `/static/image.png` ,那么 Nginx 实际上会在服务器上的 `/var/www/example/static/image.png` 寻找该图片[^1]。
#### 使用 Alias 更精确映射
对于某些情况来说,更推荐使用 `alias` 来代替 `root` 。因为 `alias` 可以直接定义目标位置而不需要再拼接URL中的部分作为子目录:
```nginx
server {
listen 80;
server_name example.com;
location /static/ {
alias /var/www/example/assets/;
try_files $uri =404;
}
}
```
这里,任何对 `/static/*` 的请求都将直接对应于 `/var/www/example/assets/*` 文件夹下的内容,而不是像上面那样将 `/static/` 加入到基础路径后面[^2]。
#### 设置 Location 匹配规则
可以利用正则表达式或者其他方式进一步细化 `location` 的匹配逻辑,比如只处理特定类型的文件或应用不同的策略给不同前缀的 URI :
```nginx
location ~* \.(jpg|jpeg|png|gif)$ {
expires max;
log_not_found off;
}
location ^~ /downloads/ {
internal;
alias /secure/downloads/;
}
```
上述第一个区块会对所有图像文件启用缓存控制,并忽略不存在文件的日志记录;第二个区块则是内部使用的下载链接,不允许外部直接访问。
#### HTTPS 访问与安全增强
考虑到现代 Web 应用的安全需求,在生产环境中通常建议通过 SSL/TLS 协议提供服务。这涉及到获取有效的SSL证书以及调整 Nginx 配置支持HTTPS连接[^4]:
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# ...其他配置...
}
```
以上展示了基本的 HTTPS 听取端口及证书指派的方式。
阅读全文