The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
ff:~ fengfeng$ nginx -v
nginx version: nginx/1.10.0
ff:~ fengfeng$ nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
nginx 运行的用户和组
1
2 #user nobody;
nginx 进程数 可以设置为CPU的总核心数
3 worker_processes 1;
全局错误日志类型 debug info notice warn error crit
4
5 #error_log logs/error.log;
6 #error_log logs/error.log notice;
7 #error_log logs/error.log info;
进程文件
8
9 #pid logs/nginx.pid;
10
连接数上限
11
12 events {
# 单个进程最大连接数(最大连接数 = 连接数 * 进程数)
13 worker_connections 1024;
14 }
15
http服务器
16
17 http {
# 文件扩展名与文件类型映射表 用来引用其他的配置文件 可以按照需求将不同的配置写到不同的文件里面
18 include mime.types;
# 默认文件类型
19 default_type application/octet-stream;
20
# 日志格式设定 格式名字设为 main
21 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
22 # '$status $body_bytes_sent "$http_referer" '
23 # '"$http_user_agent" "$http_x_forwarded_for"';
24
# access日志文件的路径 采用上面定义的 main 格式记录
25 #access_log logs/access.log main;
26
# 开启高效文件传输模式 sendfile指令 指定 nginx 是否调用 sendfile函数 来输出文件
# 对于普通应用设为 on
# 如果用来进行下载等应用磁盘IO重负载应用 可设置为off 以平衡磁盘与网络I/O处理速度 降低系统的负载
# 注意:如果图片显示不正常把这个改成off。
27 sendfile on;
# 防止网络阻塞
28 #tcp_nopush on;
29
# 长连接超时时间,单位是秒
30 #keepalive_timeout 0;
31 keepalive_timeout 65;
32
# 开启gzip压缩输出
33 #gzip on;
34
# 虚拟主机的配置
35 server {
# 监听端口
36 listen 8080;
# 域名可以有多个 用空格隔开
37 server_name localhost;
38
# 默认编码
39 #charset koi8-r;
40
# 定义本虚拟主机的访问日志
41 #access_log logs/host.access.log main;
42
#
43 location / {
44 root html;
45 index index.html index.htm;
46 }
47
48 #error_page 404 /404.html;
49
50 # redirect server error pages to the static page /50x.html
51 #
52 error_page 500 502 503 504 /50x.html;
53 location = /50x.html {
54 root html;
55 }
56
57 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
58 #
59 #location ~ \.php$ {
60 # proxy_pass http://127.0.0.1;
61 #}
62
63 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
64 #
65 #location ~ \.php$ {
66 # root html;
67 # fastcgi_pass 127.0.0.1:9000;
68 # fastcgi_index index.php;
69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 # include fastcgi_params;
71 #}
72
73 # deny access to .htaccess files, if Apache's document root
74 # concurs with nginx's one
75 #
76 #location ~ /\.ht {
77 # deny all;
78 #}
79 }
80
81
82 # another virtual host using mix of IP-, name-, and port-based configuration
83 #
84 #server {
85 # listen 8000;
86 # listen somename:8080;
87 # server_name somename alias another.alias;
88
89 # location / {
90 # root html;
91 # index index.html index.htm;
92 # }
93 #}
94
95
96 # HTTPS server
97 #
98 #server {
99 # listen 443 ssl;
100 # server_name localhost;
101
102 # ssl_certificate cert.pem;
103 # ssl_certificate_key cert.key;
104
105 # ssl_session_cache shared:SSL:1m;
106 # ssl_session_timeout 5m;
107
108 # ssl_ciphers HIGH:!aNULL:!MD5;
109 # ssl_prefer_server_ciphers on;
110
111 # location / {
112 # root html;
113 # index index.html index.htm;
114 # }
115 #}
# include指令:配置文件的引入,支持相对路径
116 include servers/*;
117 }
- nginx.conf 有三部分组成:全局块 events块 http块,http块 中又包含多个子层级块
- 在同一配置块中嵌套的配置块 各个之间不存在次序关系
全局块
主要设置一些影响 Nginx服务器 整体运行的配置指令,指令作用域为Nginx服务器全局
通常包括:
- 配置运行Nginx服务器的用户(组)
- 允许生成的worker process数
- Nginx进程PID存放路径
- 日志的存放路径和类型
- 配置文件引入
events块
主要配置影响Nginx服务器与用户的网络连接
这部分指令对Nginx服务器性能影响较大,根据实际情况灵活调整
常用到的配置:
- 是否开启对多worker process下的网络连接进行序列化
- 是否允许同时接收多个网络连接
- 选取哪种事件驱动模型处理连接请求
- 每个worker process可以同时支持的最大连接数
http块
Nginx服务器 配置中的重要部分
代理、缓存和日志定义等 绝大多数的功能 和 第三方模块的配置 都可以放在这个模块中
包含 http全局块 和 server块
http全局块
- 文件引入
- MIME-Type定义
- 日志自定义
- 是否使用sendfile传输文件
- 连接超时时间
- 单连接请求数上限
server块 与 虚拟主机 相关
虚拟主机 即 虚拟服务器,该技术为了节省互联网服务器硬件成本而出现,主要应用于HTTP、FTP及EMAIL等多项服务
将一台服务器的某项或者全部服务器内容逻辑划分为多个服务单元,对外表现为多个服务器,从而充分利用服务器硬件资源
从用户角度看,一台虚拟主机和一台独立的硬件主机是完全一样的
使用 Nginx服务器 提供web服务时,利用虚拟主机的技术就可以避免为每一个要运行的网站提供单独的Nginx服务器,也无需为每个网站对应运行一组Nginx进程。虚拟主机技术使得Nginx服务器可以在同一台服务器上只运行一组Nginx进程,就可以运行多个网站
一个http块可以包含多个server块,每个server块相当于一台虚拟主机。
server块 包含 server全局块、location块
server全局块常见的两个配置:
- 本虚拟主机的监听配置
- 本虚拟主机的名称和IP配置
location块
一个server块可以包含多个location块
作用:基于Nginx服务器接收到的请求字符串,对除虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理
- 地址定向
- 数据缓存
- 应答控制
- 多数第三方模块的配置