我需要设置动态重定向。例如,用户打开一个链接:http://www.example.com/2/3/4/并查看以下地址的页面:http://www.example2.pl/something。
我知道 RewriteMap,但我需要一些不需要重新启动 nginx 的东西,它快速、简单,并且易于与 sftp 一起使用(服务器上没有数据库)。
我的想法是推送带有 URL 的文件并配置 nginx 以使用此文件内容 - 这对我来说很好,因为我可以轻松地通过 sftp 完成此操作。
我怎样才能在 nginx 中实现这一点?
我的第二个想法是将此文件返回给用户并使用 javascript 重定向。我更喜欢第一个解决方案,所以请告诉我如何读取请求的文件内容并重定向到内部的 URL。
也许还有其他解决方案,例如 DNS,请告诉我哪个是最好的。
答案1
您可以做的是将包括location
指令的配置文件上传到特定目录。该目录将包含(即通过include yourDir/*.conf
)在您的server
配置中。
不过,你需要向 nginx master 发出信号来重新加载配置。@MichaelHampton 说得对,你不需要重新开始服务器。可以通过发出命令service nginx reload
或 来重新加载服务器配置而无需停机kill -SIGHUP <nginx master process ID>
。
nginx 中没有“持久目录监视 + 文件系统更改时重新加载”功能。您需要编写脚本(即使用 Lua),但无论如何都不建议这样做。您可以创建一个 cron 任务来定期重新加载 nginx 配置……在我看来,这看起来也很肮脏。