位置
配置文件 nginx.conf 在 /usr/local/nginx/conf/ 目录下
结构图形
大致内容如下,已去除注释部分
#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;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Nginx中文文档
main 全局配置
#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;
user username groupname;
用于设置master进程启动后,fork出的worker进程运行在那个用户和用户组下。
当按照"user username;"设置时,用户组名与用户名相同。
默认是nobody
worker_processes 1;
worker进程个数
error_log logs/error.log error;
错误日志存储文件。
日志输出级别有debug、info、notice、warn、error、crit可供选择,
其中,debug输出日志最为最详细,而crit输出日志最少。
pid logs/nginx.pid;
进程id存储文件
events
events {
worker_connections 1024;
}
use epoll;
use是个事件模块指令,用来指定Nginx的工作模式。
Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。
worker_connections 1024;
worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。
最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。
在作为反向代理时,
max_clients变为:max_clients = worker_processes * worker_connections/4。
http
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
...
}
include mime.types;
include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。
default_type application/octet-stream;
default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,
例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
sendfile on;
开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。
对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
开启 tcp_nopush on; 和tcp_nodelay on; 防止网络阻塞。
keepalive_timeout 65;
长连接超时时间,单位是秒。
长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。
如果设置时间过长,用户又多,长时间保持连接会占用大量资源。
gzip on;
开启gzip压缩输出
server
server对应虚拟主机
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
...
}
listen 80;
监听端口
server_name localhost;
用来指定IP地址或者域名,多个域名之间用空格分开
server_name 匹配规则
首先选择完全匹配的 如:www.test.com
其次选择通配符在前面的 如:*.test.com
然后选择通配符在后面的 如:www.test.*
最后选择正在表达式才匹配的 如:~^\.test\.com$
charset koi8-r;
设置网页的默认编码格式
access_log
用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。
location
location / {
root html;
index index.html index.htm;
}
root html;
用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
index index.html index.htm;
定义路径下默认访问的文件名
多个文件顺序查找,找到立即返回并结束,否则查找下一个,以此类推。
启动nginx后,在浏览器上访问 ip:80
浏览器访问192.168.8.129:80/
server 监听到80,location 匹配到 /
查找 html目录下index.html页面返回
创建测试页面index2.html、index3.html
内容大致一样
./sbin/nginx -s reload
如有修改过配置内容,执行该命令进行加载新内容,不需要重启niginx
location 匹配规则
= 精确匹配
^~ 匹配固定字符串,不匹配正则表达式
~ 区分大小写的正则匹配
~* 不区分大小写的正则匹配
/ 通用匹配,所有的URL都是以此为开头