nginx模块处理流程一般是这样的:

客户端发送HTTP请求 –> Nginx基于配置文件中的位置选择一个合适的处理模块 ->(如果有)负载均衡模块选择一台后端服务器 –> 处理模块进行处理并把输出缓冲放到第一个过滤模块上 –> 第一个过滤模块处理后输出给第二个过滤模块 –> 然后第二个过滤模块又到第三个 –> 依此类推 –> 最后把回复发给客户端

其中配置模块,我们关注的就是nginx的配置文件

nginx默认的配置文件在/usr/local/nginx/conf/nginx.conf.

配置文件分为这样几个部分:

全局设置、event、http、upstream、server设置

其中:全局设置用于配置、

1、nginx的用户和组;

2、nginx启用的子进程数;

3、错误日志路径,以及日志的记录级别;

4、nginx的pid的记录文件;

event主要用于定义nginx的工作模式

1.nginx的工作事件模型(epoll,kqueue)

2、设置 每个进程的处理的连接数

http用于提供web的功能配置

1、文件类型定义文件 和默认文件类型;

2、自定义日志格式;

3、访问日志设置

4、开启服务响应头部独立发送;

5、设置连接的超时的时间;

6、是否启用压缩功能;

7、使用server定义虚拟主机

upstream表示负载服务器;

server 位于http内部,用于配置虚拟主机,一个http下可以有多个虚拟主机的配置;

通过 upstream 和server 配合使用 ,可以配置特定访问服务的负载服务器池;

可以通过upstream 和server 配合使用,配置反向代理服务;

基于权重负载负载

#upstream表示负载服务器池,定义名字为www.lezhu.tv的服务器池
upstream www.lezhu.tv {
#server是服务器节点起始标签,其后是节点地址,可为域名或IP,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
ip_hash; #调度算法,默认是rr轮询。
server 172.16.1.7:80 weight=1;
server 172.16.1.8:80 weight=1;
server 172.16.1.9:80 weight=1 backup; #backup表示热备
} server {
listen 80; #监听的端口,也可以是172.16.1.7:80形式
server_name www.lezhu.tv; #基于域名的虚拟主机
root html/blog; #站点根目录,即网站程序放的目录
location / { #默认访问的location标签段
index index.php index.htmlindex.htm; #首页排序 }
location ~.*.(php|php5)?$ { #符合php扩展名的请求调度到fcgi server
fastcgi_pass 127.0.0.1:9000; #抛给本机的9000端口(php fastcgi server)
fastcgi_index index.php; #设定动态首页
include fastcgi.conf; #设定和fastcgi交互的相关参数包含文件
}
#将符合静态文件的图片视频流媒体等设定expries缓存参数,要求浏览器缓存。
location~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 10y; #客户端缓存上述静态数据10年
}
#将符合js,css文件的等设定expries缓存参数,要求浏览器缓存。
location~ .*\.(js|css)?$ {
expires 30d; #客户端缓存上述js,css数据30天
}
access_log /app/logs/www_access.log main; #根据日志格式记录用户访问的日志
}

  

反向代理负载均衡配置

 #upstream表示负载服务器池,定义名字为www.lezhu.tv的服务器池
upstream www.lezhu.tv {
#server是服务器节点起始标签,其后是节点地址,可为域名或IP,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
ip_hash; #调度算法,默认是rr轮询。
server 172.16.1.7:80 weight=1;
server 172.16.1.8:80 weight=1;
server 172.16.1.9:80 weight=1 backup; #backup表示热备
} server {
listen 80; #监听的端口,也可以172.16.1.7:80形式
server_name www.lezhu.tv; #代理的服务域名
location / {
#将访问www.lezhu.tv的所有请求都发送到upstream定义的服务器节点池。
proxy_pass http://www.lezhu.tv;
#在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置。
proxy_set_headerHost $host;
#在代理向后端服务器发送的http请求头中加入X-Forwarded-For字段信息,用于后端服务器程序、日志等接收记录真实用户的IP,而不是代理服务器的IP。
proxy_set_header X-Forwarded-For$remote_addr;
#设定反向代理与后端节点服务器连接的超时时间,即发起握手等候响应的超时时间。
proxy_connect_timeout60;
#设定代理后端服务器的数据回传时间
proxy_send_timeout 60;
#设定Nginx从代理的后端服务器获取信息的时间
proxy_read_timeout 60;
#设定缓冲区的大小
proxy_buffer_size 4k;
#设定缓冲区的数量和大小。nginx从代理的后端服务器获取的响应信息,会放置到缓冲区。
proxy_buffers 4 32k;
#设定系统很忙时可以使用的proxy_buffers大小
proxy_busy_buffers_size 64k;
#设定proxy缓存临时文件的大小
proxy_temp_file_write_size 64k;
#对于以上参数的详细理解可见本文开头图解。
}
access_log off; #反向代理如果并发大,务必要关闭日志,否则IO吃紧。
}

  

程序动静分离反向代理负载均衡配置

 #upstream表示负载服务器池,定义名字为www.lezhu.tv的服务器池
upstream www.lezhu.tv {
#server是服务器节点起始标签,其后是节点地址,可为域名或IP,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
ip_hash; #调度算法,默认是rr轮询。
server 172.16.1.7:80 weight=1;
server 172.16.1.8:80 weight=1;
server 172.16.1.9:80 weight=1 backup; #backup表示热备
}
server {
listen 80; #监听的端口,也可以是172.16.1.7:80形式
server_name www.lezhu.tv; #代理的域名
root html/bbs; #程序目录
index index.php index.html index.htm;
#所有静态文件由nginx服务处理
location ~.*.(htm|html|gif|jpg|jpeg|png|swf|flv)$ {
expires 3650d;
} location ~ .*.(js|css)?$ {
expires 30d;
}
#所有java相关扩展名均交由tomcat或resin服务处理。 location ~ .(jsp|jspx|do)?$ { #将访问www.lezhu.tv的所有请求都发送到upstream定义的服务器节点池。 proxy_pass http://127.0.0.1:8080 ;
#在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置。
proxy_set_header Host $host;
#在代理向后端服务器发送的http请求头中加入X-Forwarded-For字段信息,用于后端服务器程序、日志等接收记录真实用户的IP,而不是代理服务器的IP。
proxy_set_headerX-Forwarded-For $remote_addr;
}
access_log /app/logs/bbs_access.log main; #记录日志
}
}

  

nginx 配置相关解析的更多相关文章

  1. Nginx配置详细解析(全)

    一.nginx.conf文件结构 (1)共三部分:由全局块.events块.http块组成.http块又包含http全局块.server块:server块由多个location块组成. (2)一般情况 ...

  2. nginx配置相关问题

    1. nginx配置ssl相关问题 1.1 报错nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in ...

  3. nginx配置相关

    一.autoindex on; 能解决无端端的403问题. 二.NGINX配置超时时间 1.啥时候用到 用来设置请求资源和服务器返回的时间,保证一个请求占用固定时间,超出后报504超时!这样可以保证一 ...

  4. nginx配置详细解析

    转自 http://blog.csdn.net/zhongguozhichuang/article/details/528168871.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将 ...

  5. NGINX配置PHP解析

    <?php phpinfo(); ?> location ~ \.php$ { root html; fastcgi_pass ; fastcgi_index index.php; fas ...

  6. 初识nginx——配置解析篇

    一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...

  7. nginx配置浅析

    一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...

  8. 你需要知道的Nginx配置二三事

    做服务端开发的,工作中难免会遇到处理Nginx配置相关问题.在配置Nginx时,我一直本着“照葫芦画瓢”的原则,复制已有的配置代码,自己修修改改然后完成配置需求,当有人问起Nginx相关问题时,其实仍 ...

  9. Nginx 配置整理

    链接:nginx配置详细解析 1. C10k问题:无法同时并发超过(1w)客户端请求而出现的问题. nginx默认配置超过1w并发: 2.配置文件conf/nginx.conf (1)user www ...

随机推荐

  1. USACO Grass Planting

    洛谷 P3038 [USACO11DEC]牧草种植Grass Planting 洛谷传送门 JDOJ 2282: USACO 2011 Dec Gold 3.Grass Planting JDOJ传送 ...

  2. leetcode752. 打开转盘锁

    我们可以将 0000 到 9999 这 10000 状态看成图上的 10000 个节点,两个节点之间存在一条边,当且仅当这两个节点对应的状态只有 1 位不同,且不同的那位相差 1(包括 0 和 9 也 ...

  3. Gym101002E:K-Inversions

    \(Gym101002E:K-Inversions\) 题意描述: 题目连接链接 给定一个长度为\(N\)只包含\(AB\)的字符串,某个\(A\)的位置为\(j\),某个\(B\)的位置为\(i\) ...

  4. 0x01 Wechall writeup

    目录 0x01 Wechall writeup Limited Access Training: Crypto - Caesar II Impossible n'est pas français Tr ...

  5. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级

    实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 ...

  6. 【2019.7.15 NOIP模拟赛 T2】与非树(nand)(树形DP)

    树形\(DP\) 实际上,这道题应该不是很难. 我们设\(f_{x,i,j}\)表示在以\(x\)为根的子树内,原本应输出\(i\),结果输出了\(j\)的情况数. 转移时,为了方便,我们先考虑与,再 ...

  7. Linux性能优化实战学习笔记:第三讲

    一.关于上下文切换的几个为什么 1. 上下文切换是什么? 上下文切换是对任务当前运行状态的暂存和恢复 2. CPU为什么要进行上下文切换? 当多个进程竞争CPU的时候,CPU为了保证每个进程能公平被调 ...

  8. [LeetCode] 829. Consecutive Numbers Sum 连续数字之和

    Given a positive integer N, how many ways can we write it as a sum of consecutive positive integers? ...

  9. 《30天自制操作系统》笔记5 --- (Day3)

    这个专题荒废了许久,今天补点东西 不够准确的小结 用汇编来开发操作系统,就是使用汇编本身的功能再加上BIOS中断提供的功能来完成功能的过程. 汇编本身的功能不够,毕竟没有外部IO,所以通过给多个寄存器 ...

  10. 从Java官网下载最新的文档(包含API文档)

    Java学习资料(适合c转java的同学): Java中带包(创建及引用)的类的编译 - 小明快点跑 JAVA 对象引用,以及对象赋值 - 飘来荡去. Java官网下载页:https://www.or ...