nginx短链配置核心是用location精确匹配+return 302实现高效跳转:静态场景用location = /path直接返回302,动态场景用map预定义映射表配合if判断,兼顾性能、可维护性与热加载能力。

短链配置的核心思路
电商促销常用短链(如 sale.example.com/1111)指向真实活动页(如 https://www.example.com/promo/2024-spring-sale),Nginx 本身不生成短链,但可高效完成「请求匹配 → 302 重定向」。关键在于:用 location 精确捕获短路径,配合 return 302 发起临时跳转,避免 rewrite 和正则开销。
基础配置示例(静态短链)
适用于少量固定短链,维护简单、性能最优:
server {
listen 80;
server_name sale.example.com;
<pre class="brush:php;toolbar:false;"># 短链 /1111 → 跳转到春季大促页
location = /1111 {
return 302 https://www.example.com/promo/2024-spring-sale;
}
# 短链 /blackfriday → 跳转到黑五专题页
location = /blackfriday {
return 302 https://www.example.com/promo/black-friday-2024;
}
# 兜底:未匹配短链返回 404
location / {
return 404;
}}
注意:= 表示精确匹配,比正则快;302 是临时跳转,利于活动结束快速下线,不影响 SEO 权重沉淀。
动态短链支持(轻量级映射)
若短链数量较多(如上百个),不建议写满 location。可用 map 指令预定义映射表,集中管理、热加载不重启:
# 在 http 块中定义映射(全局生效)
map $uri $redirect_target {
default "";
/1111 "https://www.example.com/promo/2024-spring-sale";
/blackfriday "https://www.example.com/promo/black-friday-2024";
/flash2024 "https://www.example.com/promo/flash-sale-2024";
}
<p>server {
listen 80;
server_name sale.example.com;</p><pre class="brush:php;toolbar:false;">location / {
# 若匹配到目标 URL,则 302 跳转;否则 404
if ($redirect_target) {
return 302 $redirect_target;
}
return 404;
}}
优点:修改 map 后只需 nginx -s reload,无需改 server 配置;便于脚本批量生成映射表。
补充要点与注意事项
- HTTPS 强制跳转:生产环境应监听 443 并配置 SSL,短链服务也需走 HTTPS,避免混合内容或浏览器拦截
-
带参透传:如需保留 utm 参数(
/1111?utm_source=weibo),用return 302 $scheme://www.example.com/promo/...?$args; -
防恶意遍历:避免使用前缀匹配(如
location /)兜底跳转,防止 /admin、/.git 等敏感路径被误跳;推荐显式定义 + 404 结束 -
日志与监控:为短链 location 单独设置 access_log,方便统计点击量;可加
add_header X-Shortlink "hit";便于前端或 CDN 识别











