Administrator
发布于 2025-10-30 / 3 阅读
0
0

nginx的rewrite转发重写(改写)

📝 通用配置模板

location ~ ^/你的路径前缀/ {
    rewrite ^/你的路径前缀/(.*)$ /重写后的路径/$1 break;
    proxy_pass   http://后端服务器地址:端口;
    expires     缓存时间;
}

配置解析与通用模板

下面的表格详细解释了您配置中的每个指令,并提供了一个清晰的通用模板,方便您未来参考或用于其他类似场景。

配置指令

功能说明

您的配置示例

核心要点

location

定义URI的匹配规则。 ~ 表示使用正则表达式匹配,且区分大小写 ^/maker/ 表示匹配以 /maker/ 开头的URI。

location ~ ^/maker/ { ... }

正则匹配按配置顺序生效,将更具体的规则放在前面可避免冲突。

rewrite

重写(修改)请求的URI。 break 标志表示重写后立即停止后续重写规则,在当前location块内继续处理。

rewrite ^/maker/(.*)$ /$1 break;

此规则将 /maker/xxx 重写为 /xxx (.*) 捕获 /maker/ 后的所有内容, $1 是对其的引用。

proxy_pass

将请求转发到指定的后端服务器(上游服务)。

proxy_pass http://aiot-dasmaker3d:5999;

这是反向代理的核心指令。确保后端服务地址(主机名或IP)和端口正确无误。

expires

设置浏览器缓存的过期时间 0 表示立即过期,即不缓存。

expires 0;

适用于动态API接口,确保客户端总是获取最新数据。对于静态资源(如图片、CSS),可设置为较长时间(如 30d )以提升性能。

⚙️ 潜在优化点与注意事项

根据您的配置,这里有一些可以考虑的优化点和注意事项:

  1. 性能优化:添加代理头信息 建议在 proxy_pass 指令前添加一些必要的请求头,这有助于后端服务获取客户端的真实信息。

location ~ ^/maker/ {
    rewrite ^/maker/(.*)$ /$1 break;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass   http://aiot-dasmaker3d:5999;
    expires 0;
}
  1. 稳定性优化:配置代理超时 为避免后端服务响应慢导致Nginx连接长时间等待,可以设置合理的超时时间。

proxy_connect_timeout 30s;  # 与后端服务器建立连接的超时时间
proxy_send_timeout 30s;     # 向后端服务器发送请求的超时时间
proxy_read_timeout 30s;     # 从后端服务器读取响应的超时时间
  1. 匹配规则选择 您当前使用的是正则匹配( ~ )。如果 /maker/ 或 /c3api/ 是一个明确的、固定的路径前缀,使用 ^~ 前缀匹配是更优的选择。因为 ^~ 匹配的优先级高于普通正则匹配,且一旦匹配成功就不再检查后续的正则规则,可以提高匹配效率。

location ^~ /maker/ {
    ... # 其他配置不变
}

💎 总结

您的这两段配置是非常标准和实用的Nginx反向代理配置,清晰地实现了路径重写和请求转发的功能。通过上述的解析和优化建议,可以使配置更健壮、更高效。

希望这份优化后的笔记对您有帮助!如果需要对特定部分做进一步探讨,或者有其他配置问题,随时可以提出。


评论