Nginx详解(二) Nginx 配置文件详解

[root@LFS ~]# vim /usr/local/nginx/etc/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;

#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;

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 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

Nginx配置文件总体结构如下:

main(全局设置)
server(主机设置)
upstream (负载均衡服务器设置)
location (URL匹配特定的设置)
main 块设置的指令将影响其他所有设置
server 块的指令主要用于指定主机和端口
upstream指令主要用于负载均衡,设置一系列后端的服务器
location 块主要用于匹配网页位置
nginx全局配置说明
 
main(全局设置)
server(主机设置)
upstream (负载均衡服务器设置)
location (URL匹配特定的设置)
main 块设置的指令将影响其他所有设置
server 块的指令主要用于指定主机和端口
upstream指令主要用于负载均衡,设置一系列后端的服务器
location 块主要用于匹配网页位置
 
每个配置选项的含义解释如下:
 
user是个主模块指令,指定nginx worker进程运行用户以及用户组,默认由nobody账号执行
worker_process 是个主模块指令,指定了nginx要开启的进程数,每个nginx进程平均耗费10-12M内存,一般建议设置为auto
error_log 是个主模块指令,用来定义全局错误日志文件
pid是个主模块指令,用来指定进程Pid的存储文件位置
 
events配置说明
 
events事件指令是设定nginx的工作模式及连接数上限
use 是个事件模块指令,用来指定nginx的工作模式,nginx的支持的工作模式有select 、poll、kqueue、epool、rtsig和/dev/poll
而kqueue用在freebsd系统中,在linux中,epoll工作模式是首选。
work_connections 是个事件指令,用来定义nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_process和work_connections来决定。
 
HTTP配置说明
 
include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。
default_type属于HTTP模块指令,这里设置默认类型为二进制流。
client_max_body_size 用来设置允许客户端请求最大的单个文件字节数
clinet_header_buffer_size 用来指定来自客户端请求头的headerbuffer大小
keepalive_timeout 设置客户端连接保持活动的超时时间,在这个时间之后,服务器会关闭该连接
 
HttpGzip模块配置
 
该模块支持在线实时压缩输出数据流
 
gzip 用来设置开启或者关闭gzip模块 gzip on 表示开启gzip压缩,实时压缩输出数据流
gzip_min_length 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Lenth中获取,默认值是0
gzip_buffers 表示申请4个单位16K的内存作为压缩结果流缓存。
gzip_http_version 用来设置识别HTTP协议版本,默认是1.1
gzip_comp_level 用来指定GZIP压缩比
gzip_types 用来指定压缩类型,无论是否指定,"text/html"类型总是被压缩的。
 
负载均衡配置
 
upstream 是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡
nginx的负载均衡模块目前支持4种调度算法
 
轮询            每个请求按照时间顺序逐一分配到不同的后端服务器
weight         指定轮询权值,weight值越大,分配到的访问几率越高,权值越高 
ip_hash       每个请求按访问的IP的hash结果分配,这样来自同一个IP的访问客户固定访问一个后端服务器,有效解决了动态网页存在的session共享问题
fair             比上面两个更加智能的负载均衡算法,此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。响应时间短的优先分配。
url_hash    按照访问的url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进行一步提高后端缓存服务器的效率。
 
后端服务器的状态:
down :   表示当前的server暂时不参与负载均衡
backup :预留的备份机器。
max_fails: 语序请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream模块定义错误。
fail_timeout :在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
 
location URL匹配配置
 
URL地址匹配是进行nginx配置中最灵活的部分,location支持正则表达式匹配,也可以支持条件判断匹配。用户可以通过location指令实现nginx对动、静态网页进行过滤处理。使用location URL匹配配置还可以实现反向代理,用来实现PHP动态解析或者负载均衡。
原文地址:https://www.cnblogs.com/networking/p/13637583.html