nginx Configuration File’s Structure
前言
本篇博客主要讲解nginx配置文件中的组成部分,以及各个部分的常用的简单指令和块指令,适合刚接触nginx的同学。通过本篇文章能够宏观上明确ngxin配置文件的主要组成部分和作用。
配置文件的结构
nginx由模块组成,这些模块由配置文件中指定的指令控制。
指令分为两种指令,一种是简单指令,一种是块指令。
简单指令由名称和参数组成,由空格分开由分号(;)结束。
如:listen 80;
块指令与简单指令具有相同的结构,不同的是他是由一组{}包围的附加指令。
如果块指令可以在{}内包含其他指令,则成为上下文。如events、http、server、location。
在配置文件中,位于上下文之外的指令被称为主上下文(main context)。
events和http都位于主上下文中,sever位于http中、location位于server中。
nginx 配置文件结构示例
##Nginx worker进程运行的用户及用户组,如果不指定group,则使用与user名称相同的组。 ##语法:user user [group]; ##Default:user nobody nobody; user root; ##当其中一个不确定时,将其设置为可用CPU核数将是一个好的开始(值" auto "将尝试自动检测它)。 ##语法:worker_processesnumber|auto; ##Default:worker_processes 1; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; ##pid文件(master进程ID的pid文件存放路径)的路径 #pid logs/nginx.pid; events { ##设置工作进程可以打开的最大并发连接数。 ##这个数字包括所有连接(例如与代理服务器的连接),而不仅仅是与客户端的连接。 ##另一个需要考虑的问题是,并发连接的实际数量不能超过当前打开文件的最大数量的限制,该限制可以通过##worker_rlimit_nofile进行更改。 ##语法:worker_connections number; ##Default:worker_connections 512; worker_connections 1024; } http { ##嵌入其他配置文件 语法:include /path/file ##参数既可以是绝对路径也可以是相对路径(相对于Nginx的配置目录,即nginx.conf所在的目录) 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; log_format info escape=json '{ "@timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr",' '"costime": "$request_time",' '"realtime": "$upstream_response_time",' '"status": $status,' '"x_forwarded": "$http_x_forwarded_for",' '"referer": "$http_referer",' '"request": "$request",' '"upstr_addr": "$upstream_addr",' '"bytes":$body_bytes_sent,' '"dm":$request_body,' '"agent": "$http_user_agent" }'; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { ##监听的端口号 listen 80; ##主机名称:其后可以跟多个主机名称,开始处理一个HTTP请求时,nginx会取出header头中的Host,与每个server中的server_name进行匹配,以此决定到底由那一个server来处理这个请求。 server_name localhost; #return 301 https://$server_name$request_uri; #charset koi8-r; #access_log logs/host.access.log main; ##location 语法: location [=|~|~*|^~] /uri/ { ... } ##注意:location时有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。 location /arapp/ { autoindex on; root /home/admin/; # if (!-e $request_filename) { # rewrite ^(.*)$ /index.html?s=$1 last; # break; # } index index.html; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } location / { autoindex on; root /home/admin/arpro-front-test; if (!-e $request_filename) { rewrite ^(.*)$ /index.html?s=$1 last; break; } index index.html; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } location /ar-plus-front-dev/ { autoindex on; root /home/admin; index index.html; } location /arpro-web/ { proxy_pass http://localhost; access_log logs/access-arpro-web.log info; #proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; }
参考资料:
Nginx —— nginx服务的基本配置(nginx.conf文件的详解)