Nginx 文档毫不含糊地警告说if 是邪恶的,应该尽可能避免,并且在互联网的长度和广度上散布着类似的警告。
然而,这些警告中的大多数都特别关注块中的if
行为有多糟糕location
。此外,Nginx 文档说:
如果在位置上下文中,可以在内部完成的唯一 100% 安全的事情是:
返回 ...;
重写……最后;
我的问题是:如果其中包含的唯一指令是 a,那么在块if
级别server
(而不是location
块)使用 an 是否安全return
?例如,以下 www-to-non-www 重定向:
server {
listen 80;
server_name example.com www.example.com;
if ($http_host != example.com) {
return 301 http://example.com$request_uri;
}
# more config
}
Run Code Online (Sandbox Code Playgroud)
次要问题:我知道做这种事情的推荐方法是使用两个server
具有不同值的块server_name
。如果这是一个可以接受的用途if
,是否有任何理由仍然使用两个单独的server
块?
我正在将现有应用程序从在裸 EC2 实例上运行迁移到使用 ECS 的容器化设置。我有两种情况需要在容器之间共享数据。一个是存储一些静态和媒体文件的 EFS 共享,另一个是日志目录,以便我可以使用 sidecar 容器中的 Cloudwatch Logs 代理将日志推送到 Cloudwatch。
网络服务器需要能够将数据写入这两个位置,但到目前为止我还无法实现。日志目录是本地卷,归root:root
. 我按照这些说明设置的 EFS 共享归1000:xfs
(无用户名)所有。在这两种情况下,我的网络用户 ( www-data
) 都不能写入这些位置。
如何告诉 ECS 在具有给定所有者和/或组的容器内安装卷?