nginx笔记

Nginx 功能特性:

作http服务器,作反响代理服务器,作邮件服务器。
快速响应html请求 ; 支持FastCGI 、 SSL(加密) 、 Virtual Host 、URL Rewrite(重写)、HTTP Basic Auth、 Gzip 压缩。并且支持更多的第三方功能模块的扩展。

nginx 提供的基本服务归纳为三大类等
基本HTTP服务:自拍为http代理服务器和反向代理无服务,支持通过缓存加速访问,可以完成简单的傅在均衡和容错,支持包过滤功能和SSL
高级HTTP服务
邮件服务

nginx 安装目录:
conf 目录 存放nginx 所有的配置文件,其中nginx.conf 是主配置文件;fastcgi 使用fastcgi.conf和fastcgi_params两个文件配置。都提供了.default的默认配置文件供我们恢复到最初。
html 目录 存放了nginx 运行过程中调用的一些html 页面。 index.html页面是初始欢迎页面。50x.html 是Nginx出问题时会调用此页面
logs 目录 日志目录和nginx.pid文件保存nginx 主进程的pid号
sbin 目录 存放一个文件 nginx服务器主程序

nginx 运行时会保持一个主进程和多个worker process 工作进程。 给主进程发送信号就可以控制程序的启停。
信号:
TERM 或者INT 快速停止NGINX服务器
QUT 平缓停止nginx 服务器
HUP 平滑重启
USER1 重新打开日志文件,用于日志切割
USER2 使用新版NGINX 并停止原有NGINX进程,所谓平滑升级。
WINCH 信号用于发送平滑停止旧服务信号。

kill 信号 PID 向NGINX发送信号。 记住 kill 可以用于发送信号!

启动Nginx -g 直接在安装目录sbin目录下运行nginx就行。或者放到环境变量里。
停止Nginx -g QUT | INT | TERM 或者直接Kill -9 nginx PID 强制关闭
平滑重启 Nginx -g HUP

nginx.conf
文件结构
#全局块
events #事件块
{

}

http #http 全局块
{

server #server全局块
{

location #location块
{

}

}

server
{

location
{

}

}

}

遵循就近原则,比如低的和高的两个配置一样,按照低的走。

整个全局块中
user nginx nginx; nginx用户 用户组
worker_processes 8; 工作进程
pid logs/nginx.pid; pid存放路径

错误日志存放路径可以在全局、http、server中配置

error_log logs/error.log;

error_log logs/error.log notice;

error_log logs/error.log info; 设置级别后 文件需对用户由写权限。

worker_rlimit_nofile 65535;
指定进程可以打开的最大描述符:数目。

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

include file; 引入配置文件支持相对路径

accept_mutex on | off;请求序列化 只能在events模块中
multi_accept on | off 是否同时接收多个网络连接 默认关闭events 模块中, 关闭旧是每个worker进程只接收一个新到达的网络连接。
use epoll | poll | select |rtsig 设置驱动模型, 只能在events 模块中。
worker_connections number 设置每一个worker 进程同时开启的最大连接数。
定义MIME_TYPE (网络资源媒体类型,nginx作为web服务器要能识别前端请求的资源类型)

include mime.tpye;
default type application/octet-stream;
上面include引入了

types{ #tpyes 块 可以在http、server、location块中配置。
text/html html htm shtml;

image/gif gif;

application/x-javascript js;

audio/midi mid midi kar;

video/3gpp 3gpp 3gp;

}

 log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer" ’

‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;

log_format log404 ‘ s t a t u s [ status [ status[time_local] $remote_addr h o s t host hostrequest_uri $sent_http_location’;

日志格式设置。

r e m o t e a d d r 与 remote_addr与 remoteaddrhttp_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

h t t p u s e r a g e n t : 记 录 客 户 浏 览 器 的 相 关 信 息 ;             通 常 w e b 服 务 器 放 在 反 向 代 理 的 后 面 , 这 样 就 不 能 获 取 到 客 户 的 I P 地 址 了 , 通 过 http_user_agent:记录客户浏览器的相关信息;        通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过 httpuseragent      webIPremote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

log_format 用于定义服务日志格式

access_log logs/host.access.log main;

access_log logs/host.access.404.log log404;

sendfile on;

keepalive_timeout 60;  连接超时时间。http

listen 80;  server 块   

server_name image.***.com; server块

配置访问域名

主机名还可以捕获正则

服务器匹配location时候 先按照标准uri匹配,如果有多个就记录匹配都最高的。 然后再用location块中正则uri匹配,第一个匹配成功的结束搜索用这个location块处理。如果正则匹配错误就用刚才记录的匹配度最高的。

root path 配置根目录 可以在http 、server 、location 中设置  比如 location /data/ root pag 时候收到 /data/index.html 会在 pag/data里面找index.html响应请求

index file.html 设置默认首页。

error_page 404 /404.html 设置粗无页面

alias 改变location接收到的URI的《请求路径》。

IPv4 有7个参数
CPU优化有2个参数

gizp on ;

gizp buffers number size; gzip使用缓存空间的大小。number缓存空间个数。 size每个的大小。 32 4K

gizp_comp_level ; 越高消耗越高压缩越大。默认1

gizp_disable ;针对不同客户端选择开启或者关闭GIZP功能。

Rewrite 重定向

upstream 是后端服务器组的主要指令。

upstream bakend {

server 127.0.0.1:8027;

server 127.0.0.1:8028;

server 127.0.0.1:8029;

hash $request_uri;

}

nginx的upstream目前支持4种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend {
server server1;
server server2;
fair;
}

4、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

rewrite ^/(.*) http://www.baidu.com/ permanent(301永久重定向) last(本条规则匹配完成后继续向下匹配新的location URI规则)break(本条规则匹配完成后终止,不在匹配任何规则)redirect(临时重定向);
# 匹配成功后跳转到百度,执行永久301跳转 server location if 块中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值