# Nginx configuration, with global defaults and support for a PHP site

The following code is an Nginx default conf file. The conf file itself includes another server block which holds a site's conf.

While this combination works and the sites appear fine on web, I have a feeling that my code doesn't follow the DRY standard.

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; } # notes { # 443 ssl http2; # [::]:443 ssl http2; # } } server { listen 80; listen [::]:80; 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;
}
}


Given my code seems to me a bit repetitive, I want to ask: Can it be made a bit less repetitive?

• This works? Because your second server block is listening on port 80 and also using an SSL certificate. Either you mean to be listening on port 443 or you want to remove the lines about the SSL configuration (I think) – Conor Mancone Oct 23 '17 at 14:50
• These are just comfortable comment because later I would have to use this syntax. – JohnDoea Oct 23 '17 at 15:03