前言
很多小伙伴在第一次安装nginx时,会发现配置文件夹/etc/nginx
中除了必要的配置文件外,还会存在两种特殊的文件夹,即available文件夹与enabled文件夹;
这两种文件夹可以分为两类,一类为主管网站的sites-available
文件夹、sites-enabled
文件夹,另一类为主管模块的modules-available
文件夹与modules-enabled
文件夹。
而打开配置文件nginx.conf
后,也会发现它们的踪迹:
# ...
include /etc/nginx/modules-enabled/*.conf;
http {
# ...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
# ...
由此我们可以看出,这些文件夹与我们的配置息息相关。
接下来,我将以sites-available
与sites-enabled
为例,为大家详细介绍这两种文件的作用
sites-available文件夹
字如其名,可见该文件夹是用来放置和网站配置有关的文件,打开文件夹,可以看见一个default文件,里面写的是一些默认的网站配置:
# ...
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
# ...
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
# ...
}
# 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;
# }
#}
由此我们可以推断出,sites-available是专门用来存放网站配置的文件夹,它意为可用的网站列表,用于在需要时符号链接到sites-enabled文件夹中作为需要启用的网站
sites-enabled文件夹
sites-enabled里面只有sites-available文件夹下的符号链接,只有sites-enabled文件夹下的文件才会被nginx.conf配置文件所加载
sites-enabled意为已启用的网站,通常是将sites-available文件下的配置文件符号链接到此处,已使配置文件被nginx所加载
总结
modules-available文件夹与modules-enabled文件夹也是如此,因此不管是sites还是modules,其文件系统可以总结如下
- available文件夹用来存放可以使用的网站或者模块的配置文件
- enabled文件夹用来存放启用的网站或者模块的配置文件,里面只有available文件夹中文件的符号链接
正是这种高效的点点滴滴,才凸显出了nginx的方便管理性。当我们增加新的网站或者模块时,我们只需要在available中编写相应的配置文件并链接到enabled中即可;
而如果打算关闭某个网站或者模块,只需要删除enabled下面的符号链接即可,配置文件无需删除,下次启用时就不需要再重新编写配置文件了。