我感觉好像我的 Nginx 默认文件中有重复的代码

我感觉好像我的 Nginx 默认文件中有重复的代码

这是我的sites-available/defaultNginx 文件。如您所见,它包含我的默认设置以及我的站点设置。

server {
    server_name _;
    return 301 https://$host$request_uri;

    root /var/www/html;
    index index.php index.html index.htm;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass 127.0.0.1:9000;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ /\.ht {
        deny all;
    }
}

server {
    listen 80;
    listen [::]:80;
    # 443 ssl http2;
    # [::]:443 ssl http2;

    server_name contfix.co.il www.contfix.co.il;

    ssl_certificate /etc/nginx/conf.d/ssl/contfix.co.il.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/contfix.co.il.key;
    ssl_dhparam /etc/nginx/conf.d/ssl/dhparam.pem;

    root /var/www/html/contfix.co.il;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass 127.0.0.1:9000;
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff)$ {
        expires 365d;
    }

    location ~*  \.(pdf)$ {
        expires 30d;
    }
}

我觉得好像我有一些代码重复,使我的特定地点服务器块太长而没有充分理由,因此不符合 DRY 标准。

我尝试删除所有在我看来是顶部默认服务器块重复的内容,但每次都只会破坏服务器。

那里真的有重复吗?我可以将哪些内容移至顶部默认服务器块?

我的目的是让特定站点的服务器块尽可能短。

答案1

您误解了默认服务器块的用途_。它不包含default所有其他服务器块的设置,它是在没有其他块与客户端发出的服务器请求匹配时使用的块(换句话说,当没有可用的 webapp 或网站时)。您仍然必须单独配置每个服务器块。

您可以使用包含内容,但尽管这使得单个更改更容易,因为您只需对所有服务器块更改一次,但它使得整体配置更加混乱。

相关内容