1

对于我使用 nginx 托管的每个网站,我都有一个不同的文件,其中包含 server {} 块/etc/nginx/conf.d/

例如...
/etc/nginx/conf.d/website1.co.uk
/etc/nginx/conf.d/website2.org
/etc/nginx/conf.d/website3.com

我发现自己在每个 server {} 块中重复相同的代码,并且想知道是否可以制作一个“catch all” server {} 块来容纳可重用代码。

这个新的“包罗万象”文件将包括诸如...

# Redirect all www. attempts to non-www.
server {
  server_name www.$anything; hmm?
  return 301 $scheme://$hostname$request_uri;
}

server {
  server_name _; hmm?

  # Add expires to static files
  location ~* \.(?:ico|css|js|gif|jpe?g|png|bmp)$ {
    expires max;
    access_log off;
  }

  # Pass PHP files to PHP
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
  }

}

有没有人这样做过?
我们是否必须为我们托管的每个网站重复这些类型的通用代码?

4

1 回答 1

1

你只需要include. 将所有样板文件放在单独的文件中,没有服务器块。include fastcgi_params示例配置中提到的就是一个很好的例子。如果没有前导斜杠,nginx 将在主配置文件所在的目录中查找。所以:

include fastcgi_params;
include /etc/nginx/fastcgi_params;

是等价的,如果 nginx.conf 在/etc/nginx.

于 2013-04-12T17:44:57.120 回答