为什么要在 nginx 配置中对域名进行硬编码?

为什么要在 nginx 配置中对域名进行硬编码?

我一直在读,在 nginx 配置文件中,我们应该硬编码主机名而不是使用变量。

例如:

server_name www.example.com example.com;
return 301 https://www.example.com$request_uri;

代替

server_name www.example.com example.com;
return 301 https://$host$request_uri;

我发现 nginx 在启动时不会缓存静态配置,这很奇怪。

是否有关于此事的官方文献,还是仅仅是传闻?

答案1

我发现官方文档

它通常指的是变量,但其含义很明确:如果可能的话,进行硬编码。

变量不应用作模板宏。变量在处理每个请求期间在运行时进行评估,因此与纯静态配置相比,它们的成本相当高。使用变量来存储静态字符串也是一个坏主意。相反,应该使用宏扩展和“include”指令来更轻松地生成配置,并且可以使用外部工具(例如 sed + make 或任何其他常见模板机制)来完成。

还有

相关内容