Nginx的配置文件通常位于/etc/nginx/nginx.conf,这是主配置文件。除此之外,Nginx还支持包括其他配置文件的include指令,这使得配置更加模块化和易于管理。下面是Nginx配置文件的基本结构和各个部分的解析:
nginx.conf)user nobody;
worker_processes auto;
error_log logs/error.log warn;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
全局块是配置文件的起始部分,设置了一些全局的配置项,如运行Nginx的用户(user)、工作进程数(worker_processes)、错误日志路径(error_log)和PID文件路径(pid)。
user nobody;
worker_processes auto;
error_log logs/error.log warn;
pid logs/nginx.pid;
events块用于配置Nginx的工作模式和连接处理相关参数,例如每个工作进程的最大连接数(worker_connections)。
events {
worker_connections 1024;
}
http块是Nginx配置中最重要的部分之一,包含了HTTP服务器的配置。它包括MIME类型定义(mime.types)、默认MIME类型(default_type)、日志格式(log_format)、访问日志路径(access_log)、文件传输优化(sendfile)和连接超时时间(keepalive_timeout)等。
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
server块用于配置虚拟主机,每个server块代表一个虚拟主机。它包括监听端口(listen)、服务器名称(server_name)、根目录(root)、默认首页(index)等。
server {
listen 80;
server_name www.example.com;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
location块用于配置URL的处理规则,可以指定特定的URL路径或正则表达式来匹配请求,并定义相应的处理方式。
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
Nginx还支持通过include指令包含其他配置文件,例如:
/etc/nginx/conf.d/*.conf:包含所有在conf.d目录下的配置文件。/etc/nginx/sites-enabled/*:包含所有在sites-enabled目录下的配置文件。这些配置文件通常用于定义虚拟主机和其他特定的HTTP服务器配置。
通过这种模块化的配置方式,Nginx的配置文件可以非常灵活和易于管理。