nginx配置文件主要分为4部分:
main(全局设置)    main部分设置的指令将影响其他所有设置
server(主机设置)server部分的指令主要用于指定主机和端口
upstream(负载均衡服务器设置)upstream指令主要用于负载均衡,设置后端服务器
location(URL匹配特定位置的设置)部分用于匹配网页位置
这四者之间的关系:
server继承main,location继承server,
upstream既不会继承其他设置也不会被继承

-------------------------------------------------------------------------------------------------------------------

#user是主模块指令,定义Nginx运行的用户和用户组
user www www;

#worker——processes是主模块指令,指定了nginx要开启的进程数,每个nginx进程平均耗费10M-12M,
建议设置为等于CPU总核心数。
worker_processes 8;

#error_log是个主模块指令,用来定义全局错误日志文件,日志输出级别有[ debug | info | notice | warn | error | crit ]可供选择,其中debug输出日志最为详细,而crit输出日志最少。
error_log /var/log/nginx/error.log info;

#pid是主模块指令,用来指定进程id的存储文件位置
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;

#events指令用来设定nginx工作模式与连接数上限
events
{
#use是个事件模块指令,用来指定nginx的工作模式,nginx支持的工作模式有[ kqueue、rtsig、epoll、poll、select、 /dev/poll];select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在linux平台上,而kqueue用在BSD系统中,对于linux系统,epoll工作模式时首选
use epoll;
#worker_connections事件模块指令,用于定义nginx每个进程的最大连接数,默认是1024,最大客户端连接数有worker_processes和worker_connections决定,即max_client=worker_processes*worker_connections,在作为反向代理是变为:max_clients=worker_processes*worker_connections/4。进程的最大连接数受linux系统的最大打开文件数限制,在执行操作系统命令“ulimit -n 65535”后worker_connections的设置才能生效。
worker_connections 65535;
}

-------------------------------------------以上是全局配置-------------------------------------
#设定http服务器
http
{
include mime.types; #主模块指令,实现对配置文件所包含的文件设定,可以减少主配置文件的复杂度,类似apache中的include方法。
default_type application/octet-stream; #属于http核心模块指令,这里默认类型为二进制流,也就是当文件类型未定义是使用这种方式,例如在没有配置php环境时,nginx是不予解析的,此时,用浏览器访问php文件就会出现下载窗口
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
proxy_headers_hash_max_size 51200; #设置头部哈希表的最大值,不能小于你后端服务器设置的头部总数
proxy_headers_hash_bucket_size 6400;#设置头部哈希表大小
client_header_buffer_size 32k; #用于指定来自客户端请求头headerbuffer大小,对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。这里设置为32KB
large_client_header_buffers 4 128k; #用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“128”为大小,最大缓存为4个128KB。
sendfile on; #开启高效文件传输模式,将tcp_nopush和tcp_nodely两个指令设置为on,用于防止网络阻塞。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #用于设置客户端连接保持活动的超时时间,在超过这个时间之后服务器会关闭该链接。
client_header_timeout 3m;
用于设置客户端请求读取超时时间,如果超过这个时间,客户端没有发送任何数据,nginx将返回“request time out (408)”错误。
client_body_timeout 3m;用于设置客户端请求主体读取超时时间,默认值为60.如果超过这个时间,客户端还没有发送任何数据,nginx将返回“Request time out(408)”
server_tokens off; #修改或隐藏Nginx的版本号
client_body_buffer_size 256k;# 缓冲区代理缓冲用户端请求的最大字节数
send_timeout 3m; #服务器超时设置
   
#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300; 指定连接到后端fastCGI的超时时间
fastcgi_send_timeout 300;    向fastCGI请求的超时时间,这个值是指已经完成两次握手后向fastCGI传送的超时时间
fastcgi_read_timeout 300;    接收fastCGI应答的超时时间,这个值已经完成两次握手后接收fastCGI应答的超时时间
fastcgi_buffer_size 64k;    指定读取fastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,一般设置为64k
fastcgi_buffers 4 64k;        指定本地需要用多少和多大的缓冲区来缓冲fastCGI的应答
fastcgi_busy_buffers_size 128k;    默认值是fastcgi_buffers的两倍
fastcgi_temp_file_write_size 128k;    在写入fastcgi_temp_path是用多大的数据块,默认值是fastcgi_buffers两倍

#gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k;
#用于设置允许压缩的页面最小字节数,页面字节数从header头的content-length中获取,默认值是0,
不管页面多大都进行压缩,建议设置成大于1k的字节数,小于1k可能会越压越大最小压缩文件大小
gzip_buffers 4 16k; #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
gzip_types text/plain application/x-javascript text/css application/xml;
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;选项可让前端的缓存服务器缓存经过gzip压缩的页面,例如,用squid缓存经过nginx压缩的数据。
#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用
----------------------------------以上是http模块设置--------------------
upstream是nginx的http upstream模块,这个模块通过一个简单的调度算法来实现客户端Ip到后端服务器的负载均衡,
下面的设置中,通过upstream指令指定一个负载均衡器的名称为blog.123.com,这个名称可以任意指定,在后面需要用到的地方直接调用即可。
upstream www.123.com {
server 192.168.12.25:80 weight=3;
server 192.168.12.22:80 weight=2;
server 192.168.12.92:80 weight=3;
}
nginx的负载均衡支持4种调度算法:

轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统自动剔除,使用户访问不受影响,
weight  指定轮询权值,weight值越大,分配到的访问几率越高,主要用于后端每个服务器性能不均的情况下
ip_hash 每个请求按访问ip的hash结果分配,这样来自同一个ip的访客固定访问一个后端服务器,有效解决动态网页
存在的session共享问题
fair  比上面连个更加智能的算法,此种算法可以依据页面大小和加载时间长短智能的进行负载均衡,也就是根据后端服务器的
响应时间来分配请求,响应时间短的优先分配,nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载nginx的upstream_fair模块
url_hash 此方法按访问的url的hash结果来分配请求,是每个url定向到同一个后端服务器,可以进一步提高后端缓存
服务器的效率,nginx本身是不支持url_hash,如果需要使用这种调度算法,必须安装nginx的hash软件包

在http upstream模块中,可以通过server指令指定后端服务器的ip地址和端口,同时还可以设定每个后端服务器在
负载均衡调度中的状态,常用的几种状态有:

down  表示当前的server暂时不参与负载均衡
backup 预留的备份机器,当其他所有的非backup机器出现故障或者忙的时候才会请求backup机器,因此这台机器的压力最轻
max_fails 允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误
fail_timeout 在经历了max_fails此失败后,暂停服务的时间,max_fails可以和fail_timeout一起使用

--------------------------------以上是设定负载均衡的服务器列表--------------------------
#虚拟主机的配置
server
{
#listen指定虚拟主机服务器端口
listen 80;
#server_name用来指定ip地址或者域名,多个域名之间用空格分开
server_name www.ha97.com ha97.com;
#index用于设定访问的默认首页地址
index index.html index.htm index.php;
#root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以使绝对路径
root /data/www/ha97;
#charser用于设置网页的默认编码格式
charest gb2312
#access_log用来指定此虚拟机的访问日志存放路径
access_log /data/logs/nginx/goods.access.log;
#error_log 用来指定此虚拟机的错误日志存放路径
error_log /data/logs/nginx/goods.error.log;
--------------------------------------以上是server虚拟主机配置----------------------------
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#图片缓存时间设置,expires用来指定过期时间
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10d;
}
#JS和CSS缓存时间设置,expires用来指定过期时间
location ~ .*\.(js|css)?$
{
expires 1h;
}
#日志格式设定
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#定义本虚拟主机的访问日志
access_log /var/log/nginx/ha97access.log access;

#对 "/" 启用反向代理
location / {
proxy_pass http://127.0.0.1:88;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以下是一些反向代理的配置,可选。
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#设定缓存文件夹大小,大于这个值,将从upstream服务器传
}

#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
}

#本地动静分离反向代理配置
#所有jsp的页面均交由tomcat或resin处理
location ~ .(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
#所有静态文件由nginx直接读取不经过tomcat或resin
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{ expires 15d; }
location ~ .*.(js|css)?$
{ expires 1h; }
}
}
---------------------------------------------以上是url匹配设置-----------------------------------

例子:

配置文件信息
 vi /usr/local/nginx/conf/nginx.conf
user  www www;
worker_processes  1;
error_log  /cacti/nginx/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;
server_names_hash_bucket_size 128;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
tcp_nopush     on;
keepalive_timeout 300;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
server_tokens off;
client_body_buffer_size 256k;
send_timeout 3m;
client_header_timeout 3m;
client_body_timeout 3m;
proxy_ignore_client_abort on;
gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css ap        plication/xml;
gzip_vary on;
include vhosts/*.conf;
}

vi /usr/local/nginx/conf/vhosts/upstream.conf

upstream test {
        server 192.168.12.22:80;
        server 192.168.12.25:80;
        }

vi /usr/local/nginx/conf/vhosts/proxy.conf

server{
        listen             80;
        server_name  192.168.12.22;

location / {
        proxy_pass http://test/;
  }
}
server{
        listen             80;
        server_name  192.168.12.25;

location / {
        proxy_pass http://test/;
  }
}

nginx配置文件参数详解的更多相关文章

  1. Nginx 主配置文件参数详解

    Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置). ...

  2. Nginx配置文件中文详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  3. nginx配置参数详解

    配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...

  4. Nginx gzip参数详解及常见问题(已解决)

    1.Nginx gzip功能 Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Ng ...

  5. compose配置文件参数详解

    转自:https://www.cnblogs.com/jsonhc/p/7814138.html 本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnm ...

  6. sshd_config 配置文件参数详解

    sshd_config配置详解 名称sshd_config - OpenSSH SSH 服务器守护进程配置文件 大纲/etc/ssh/sshd_config 描述sshd(8) 默认从 /etc/ss ...

  7. Nginx 配置参数详解

    #定义Nginx运行的用户和用户组 user www www;   #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;   #全局错误日志定义类型,[ debu ...

  8. Linux网卡配置文件 参数详解

    之所以弄这玩意儿是图个清晰方便,最近这段时间弄了好十来次虚拟机网络了ubuntu,centos,rhat7各种折腾,其实把网上各种命令行下的攻略折腾最后关键无非都是对/etc/sysconfig/ne ...

  9. Hadoop学习(二) Hadoop配置文件参数详解

    Hadoop运行模式分为安全模式和非安全模式,在这里,我将讲述非安全模式下,主要配置文件的重要参数功能及作用,本文所使用的Hadoop版本为2.6.4. etc/hadoop/core-site.xm ...

随机推荐

  1. DOS cmd - how to ping a remote host with specified port

    You can use ping to test whether you can connect to a remote host: ping baidu.com ping 125.6.45.88 ( ...

  2. Cloud Foundry技术全貌及核心组件分析

    原文链接:http://www.programmer.com.cn/14472/ 历经一年多的发展,Cloud Foundry的架构设计和实现有了众多改进和优化.为了便于大家了解和深入研究首个开源Pa ...

  3. LeetCode——Move Zeroes

    Description: Given an array nums, write a function to move all 0's to the end of it while maintainin ...

  4. 关于layer.photos即照片显示的问题。

    在layer组件中,照片显示是不常用,今天做了一些不伤了. 在这里写出来,以备后用. 其中注意几个问题, 1.格式问题. 2.路径问题. 不同的layer有不同的格式,查看layerAPI中发现的格式 ...

  5. Express 框架的安装

    从零开始用 Node.js 实现一个微博系统,功能包括路由控制.页面模板.数据库访问.用户注册.登录.用户会话等内容. Express 框架. MVC 设计模式. ejs 模板引擎 MongoDB 数 ...

  6. {sharepoint} SetPermission

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsof ...

  7. Hibernate之核心文件

    一个Hibernate项目核心配置文件主要分为以下三个方面:1.配置文件hibernate.cfg.xml:2.配置文件*.hbm.xml,此文件一般包括映射文件的结构以及各种属性的映射方式:3.Hi ...

  8. 170719、springboot编程之异步调用@Async

    1.在pom.xml中增加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  9. 170523、快速提升你 MySQL 数据库的段位

    MySQL 数据库知识脉络,大致可以分为四大模块: ● MySQL 体系结构: ● MySQL 备份恢复: ● MySQL 高可用集群: ● MySQL 优化. 从四大模块中,抽离7个部分给大家做分析 ...

  10. pandas的DataFrame用法

    用来生成DataFrame数据 1.说明: class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=F ...