nginx 配置⽂件解析
Nginx 是⼀个轻量级⾼性能的web 服务器,它是为快速响应⼤量静态⽂件请求和⾼效利⽤系统资源⽽设计的。与apache 使⽤⾯向进程或线程的⽅式处理请求不同,nginx 使⽤异步事件驱动模型在负载下性能更突出。
虽然nginx 能⾼效地服务静态⽂件,但也有⼈认为nginx 处理动态内容并不理想。不像apache 服务器,nginx 没⽤使⽤内嵌解释器的⽅式来处理动态内容。相反,动态内容被丢给cgi ,fastcgi 或者像apache 这样的web 服务器,然后把处理结果返回给nginx ,nginx 在返给浏览器。这种⽅式就导致部署起来会更复杂⼀些。出于这些原因,使⽤和配置nginx 可能会晦涩。nginx 的配置感觉更复杂或者不直接。
本⽂的前提是你使⽤来安装nginx ,如果你使⽤其它⽅法或者系统⾃带包安装,那么你的配置⽂件的位置和下⾯讲的配置⽂件位置可能不同。
nginx 的强⼤都是靠配置⽂件来实现,nginx 就是⼀个⼆进制⽂件nginx 读⼊⼀个配置⽂件f 可能include 包含若⼲⼦配置⽂件)来实现各种各样的功能。
管理配置⽂件
nginx 使⽤嵌套的花括号语法来定义选项。安装完成后nginx 的主配置⽂件被放在/usr/local/nginx/nginx.c
onf 。同时⼀个默认的备份配置⽂件存在/usr/local/f.default 。其它⼦配置⽂件同样有⼀个.default 结尾的备份配置⽂件。.default 的作⽤是当你修改配置⽂件错误的时候,你可以快速回到上⼀个好⽤的状态。建议⼤家经常对配置好的功能的配置⽂件做备份,可以以⽇期⽂件做结尾。⽐如你可以使⽤如下指令完成,修改⽇期为你所备份的⽇期。
每次修改完f 都要重新加载配置⽂件
1
nginx和apache区别
cp  /usr /local /nginx /nginx .conf  /usr /local /nginx /nginx .conf -20121224
1
/usr /loca /nginx /nginx
-t
1
kill
-
HUP  `cat  /usr
全局配置
我们分⽚段⼀点点的介绍默认的配置⽂件这些是配置⽂件开始的默认⾏。通常的环境下,你不需要修改这些选项。这⼀部分有⼏个⽅⾯需要我们注意:
所有以#号开的⾏是注释,nginx 不会解析。默认的配置⽂件有许多说明解释的注释块
指令是以⼀个变量名开头(例如,worker_processes 或pid),然后包含⼀个参数(例如,1或 logs/nginx.pid)或者多个参数(例
如,"logs/error.log notice")所有指令以分号结尾
某些指令,像上⾯的events 可以包含多个⼦指令作为参数。这些⼦指令以花括号包围。
虽然nginx 不解析空⽩符(例如tab ,空格,和换⾏符),但是良好的缩进能提⾼你维护长期运⾏配置⽂件的效率。良好的缩进使配置⽂件读起来更流畅,能让你很容易明⽩配置的策略,即使⼏个⽉前。下⾯我们继续读配置⽂件
.pid `
123456789101112#user  nobody;worker _processes          1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events
{
worker _connections          1024;}
1234567891011http  {    include      mime .
"http { }"块的开头像配置⽂件的开头⼀样都是标准配置不需要修改。这⾥我们需要把注意⼒放在这些元素上:
这部分内容的开始"include"语句包含/usr/loca/pes ⽂件到f ⽂件include 语句所在位置。include 对f ⽂件的可读性和组织性很有⽤。
不能过多使⽤include ,如果太多递归地include ⽂件会产⽣混乱,所以需要合理有限制地使⽤include 来保证配置⽂件的清晰和可管理。你可以去掉log_format 指令前的注释并修改这⼏⾏设置的变量为你想记录的信息。
gzip 指令告诉nginx 使⽤gzip 压缩的⽅式来降低带宽使⽤和加快传输速度。如果想使⽤gzip 压缩,需要添加如下配置到配置⽂件的gzip 位置。
/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  0;
keepalive _timeout          65;
#gzip  on;
123456        gzip on ;
使⽤gizp 压缩并不是没有代价的。在降低带宽的同时也增加了CPU 的使⽤。gzip_cop_level 的参数取值范围1-9,9代表最⽤CPU 和1代表最少⽤CPU ,其默认值是1.
另外,请注意上⾯的⽚段 "http { " 是http 的前半部分,其余部分解下⾯继续,直到匹配的"}"。
虚拟机server 配置
我们家是f 接下来的配置⽂件是这样
7
gzip_http _version        1.1;
gzip_comp _level        2;
gzip_types    text /plain text /html text /css
application /x -javascript text /xml
application /xml application /xml +rss
text /javascript ;
123456789101112        server  {                listen        80;
server_name  localhost ;
我们可以看到http{ }块到此结束。
server 指令块,像上⾯例⼦中那个⼀样,是我们nginx ⽤户主要配置⾃⼰虚拟主机的地⽅。在server 块⾥有许多重要的指令。listen 指令告诉nginx 在⼀个特定的hostname ,ip 或者tcp 端⼝监听连接。默认,http 服务运⾏在80端⼝。⼀下这些listen 指令都是有效的:
access_log  logs /localhost .access .log  main ;
location  / {
root  html ;
index  index .html index .htm ;
}
}}
1234567891011121314151617listen    127.0.0.1:80;listen    localhost :80;
listen    127.0.0.1:8080;
listen

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。