我对 /etc/nginx/sites-enabled 中的这个配置文件“default”有几个疑问。它显示如下。
server
{
root /usr/share/nginx/www;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080;
}
location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}
location /images {
root /usr/share;
autoindex off;
}
}
- 没有“Listen”指令,它怎么知道默认为 80
- server_name 是 localhost,其他域名如何工作?
- 为什么位置指令嵌入在服务器指令中?这是否意味着这些位置仅适用于此服务器?
- 我的所有配置都没有 listen 80 default_server;那么 nginx 如何选择使用哪个配置呢?
答案1
简短的免责声明:sites-enabled/sites-available 布局不是来自 nginx 本身,而是来自您的软件包维护者。默认情况下,nginx 提供单个 nginx.conf 示例配置,这比include
某些 linux 软件包中通过多个文件连接起来的配置更明显。以下是按顺序回答的问题:
没有“Listen”指令,它怎么知道默认为 80
这是因为 nginx 默认监听 80 端口(如果以非 root 身份运行,则监听 8000 端口),请参阅http://nginx.org/r/listen。
server_name 是 localhost,其他域名如何工作?
默认情况下,nginx 使用server
配置中的第一个作为默认服务器(并使用它来处理与其他服务器server_name
指令不匹配的域)。只要 sites-enabled/default 是配置中唯一的服务器 - 它实际上将作为默认服务器工作。如果您添加更多服务器 - 它可能会中断。请参阅详细说明http://nginx.org/en/docs/http/request_processing.html。
为什么位置指令嵌入在服务器指令中?这是否意味着这些位置仅适用于此服务器?
是的,location
指令可能仅在某些特定范围内指定server
,并且仅适用于与该服务器匹配的请求。
我的所有配置都没有 listen 80 default_server;那么 nginx 如何选择使用哪个配置呢?
配置中找到的第一个服务器块将是默认的。由于include
通配符不强制任何顺序,因此它可能是一些随机的服务器块。