nginx 配置文件详解

nginx 配置文件详解

我对 /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;
   }
}
  1. 没有“Listen”指令,它怎么知道默认为 80
  2. server_name 是 localhost,其他域名如何工作?
  3. 为什么位置指令嵌入在服务器指令中?这是否意味着这些位置仅适用于此服务器?
  4. 我的所有配置都没有 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通配符不强制任何顺序,因此它可能是一些随机的服务器块。

相关内容