我的Nginx配置可以在没有默认服务器的情况下工作吗

时间:2020-05-05 06:23:33

标签: nginx

我尝试在nginx安装上设置五个域

这是我发现的默认配置文件

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

 # SSL configuration
 #
 # listen 443 ssl default_server;
 # listen [::]:443 ssl default_server;
 #
 # Note: You should disable gzip for SSL traffic.
 # See: https://bugs.debian.org/773332
 #
 # Read up on ssl_ciphers to ensure a secure configuration.
 # See: https://bugs.debian.org/765782
 #
 # Self signed certs generated by the ssl-cert package
 # Don't use them in a production server!
 #
 # include snippets/snakeoil.conf;

root /var/www/html;

 # Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
 # First attempt to serve request as file, then
 # as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

 # pass PHP scripts to FastCGI server
 #
 #location ~ \.php$ {
 #       include snippets/fastcgi-php.conf;
 #
 #       # With php-fpm (or other unix sockets):
 #       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 #       # With php-cgi (or other tcp sockets):
 #       fastcgi_pass 127.0.0.1:9000;
 #}

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 #       deny all;
 #}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#try_files $uri $uri/ =404;
#       }
#}

我想删除注释和默认的conf,并用编号的conf文件代替

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name first.com www.first.com;
    root /var/www/first;

    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

one.conftwo.conf

server {
    listen 80;
    listen [::]:80;

    server_name second.com www.second.com;
    root /var/www/second;

    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

如果我删除默认的conf,那么在one.conf conf中省略default_server有什么作用?

谢谢。

1 个答案:

答案 0 :(得分:1)

Nginx始终具有默认服务器。它要么是使用default_server属性选择的,否则Nginx将使用带有正确的server指令的第一个listen块。有关详情,请参见this document

对于您而言,第一个server块将位于第一个.conf文件中,该文件通常是按字母数字排序时具有第一个文件名的文件。