引言
Nginx 是一款高性能的 HTTP 和反向代理服务器,以其轻量级、稳定性高和配置灵活而受到广泛关注。在网站或应用程序中,路由配置是至关重要的,它决定了用户请求如何被处理。本文将详细介绍 Nginx 的路由配置,包括基本概念、配置步骤、常见案例以及实战技巧。
基本概念
1. 路由
路由是指将客户端请求分发到相应的服务器或应用程序的过程。在 Nginx 中,路由主要涉及两个方面的配置:location 和 server。
2. location
location 用于匹配请求的 URI(Uniform Resource Identifier,统一资源标识符),并指定对应的处理逻辑。它可以包含以下几种匹配模式:
- 完全匹配:如
/index.html - 正则表达式匹配:如
/^(.*)\/images\/(.*)$ - 后缀匹配:如
/images/*.jpg - 前缀匹配:如
/user/*
3. server
server 是 Nginx 中的虚拟主机配置,用于定义网站或应用程序的基本信息,如域名、监听的端口等。
配置步骤
以下是一个简单的 Nginx 路由配置示例:
server {
listen 80;
server_name www.example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /images/ {
root /usr/share/nginx/html;
index index.jpg;
}
location /contact/ {
proxy_pass http://backend.example.com;
}
}
在这个例子中,请求 / 路径将返回首页,请求 /images/ 路径将返回图片,请求 /contact/ 路径将转发到后端服务器。
常见案例
1. 基于域名和路径的访问控制
server {
listen 80;
server_name www.example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
server {
listen 80;
server_name admin.example.com;
location / {
root /usr/share/nginx/html/admin;
index index.html index.htm;
}
}
在这个例子中,访问 www.example.com 和 admin.example.com 将返回不同的页面。
2. 基于文件扩展名的路由
server {
listen 80;
server_name www.example.com;
location ~* \.(jpg|jpeg|png|gif)$ {
root /usr/share/nginx/html/images;
expires 1d;
}
}
在这个例子中,所有以 .jpg、.jpeg、.png 和 .gif 结尾的文件都将被缓存 1 天。
实战技巧
1. 使用 try_files 指令
try_files 指令用于在多个文件路径之间尝试匹配,直到找到一个存在的文件或目录为止。例如:
location / {
try_files $uri $uri/ /index.html;
}
这个配置意味着,当请求 / 路径时,Nginx 会尝试以下路径:
$uri:即请求的 URI$uri/:请求的 URI 后面加上一个斜杠/index.html:如果前两个路径都不存在,则返回首页
2. 利用 rewrite 指令进行 URL 重写
rewrite 指令用于修改请求的 URI,使其符合特定的规则。例如:
server {
listen 80;
server_name www.example.com;
location /old/ {
rewrite ^/(.*)$ /new/$1 permanent;
}
}
在这个例子中,访问 /old/ 路径的请求将被重写到 /new/ 路径,并返回 301 永久重定向。
通过掌握 Nginx 的路由配置,您可以为网站或应用程序创建高效、安全的网络环境。本文介绍了基本概念、配置步骤、常见案例和实战技巧,希望对您有所帮助。