假设我有一个网站的 Nginx 配置。
# /etc/nginx/sites-available/my-site
server {
...
}
但我想sendfile off;
针对该网站进行设置。我可以http
在文件开头添加一个块吗?
# /etc/nginx/sites-available/my-site
http {
sendfile off;
}
server {
...
}
这真的有用吗?这会对所有网站产生全局影响吗?
答案1
我认为 nginx 确实非官方地支持多个 http 块,但通常只有一个。
这个想法是,您有一个 http 块/上下文,然后在 http 块内有一个或多个服务器块。在服务器块内,您可以有一个或多个位置块。
配置设置是继承的,可以使用上述嵌套方法覆盖。
关于sendfile,它可以在任何块内配置:
Syntax: sendfile on | off;
Default: sendfile off;
Context: http, server, location, if in location
(看:http://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile)
因此,您只需将“sendfile off;”添加到您的服务器块中,这将覆盖在 http 块中设置的 sendfile 值。
答案2
简短回答:不需要,在您的站点配置中您已经在 http{} 块中。
例如,CentOS 7 的默认 nginx.conf 如下所示:
#...
events {
#...
}
http {
#...
include /etc/nginx/conf.d/*.conf;
#...
server {
#...
}
}
因此,您的示例可能只是:
# /etc/nginx/sites-available/my-site
sendfile off;
# Any http block specific directives (like map) can also go here
}
server {
...
}
答案3
不,nginx 不支持多个 http 块...如果您尝试,您将收到错误:
"http" directive is duplicate in /etc/nginx/nginx.conf:xyz