nginx 配置 1

一、Nginx介绍
特性:
模块化设计,较好的扩展性
高可靠性
支持热部署:不停机更新配置文件,升级版本,更换日志文件
低内存消耗: 10000个keep-alive连接模式下的非活动连接,仅
需要2.5M内存
event-driven,aio,mmap, sendfile
基本功能:
静态资源的web服务器(图片, js, css, html, txt等静态资源)
http协议反向代理服务器(结合FastCGI/uWSGI/SCGI等协议)
pop3/imap4协议反向代理服务器
模块化(非DSO),如zip, SSL模块

在这里插入图片描述

nginx的程序架构: master/worker结构:

  • 一个master进程:负载加载和分析配置文件、管理worker进程、平滑升级
  • 一个或多个worker进程:
    处理并响应用户请求
  • 缓存相关的进程:
    cache loader:载入缓存对象
    cache manager:管理缓存对象

二 nginx 的编译安装
useradd -r -s /sbin/nologin nginx
yum groupinstall “Development Tools”
yum install pcre-devel openssl-devel zlib-devel

tar xvf nginx-1.6.2.tar.gz

cd nginx-1.6.2
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-debug

make && make install
/usr/local/nginx/sbin/nginx
iptables -F
ss -tnl
三 nginx 配置文件组成部分
主配置文件:nginx.conf
include conf.d/.conf
fastcgi, uwsgi,scgi等协议相关的配置文件
mime.types:支持的mime类型
主程序文件:/usr/sbin/nginx
Unit File:nginx.service
Nginx配置文件:
nginx配置文件组成:主配置文件nginx.conf,conf.d/
.conf;
fastcgi,uwsgi,scgi等协议相关的配置文件;
mime.types:支持的mime类型

主配置文件
main段配置:

分类:

正常运行必备的配置

优化性能相关的配置

用于调试及定位问题相关的配置

事件驱动相关的配置

正常运行必备的配置:

1、user # 指定用于运行worker进程时的用户
Syntax: user user [group];
Default:user nobody nobody;
Context: main
2、pid /PATH/TO/PID_FILE; # 指定存储nginx主进程进程号码的文件路径
Syntax: pid file;
Default:pid nginx.pid;
Context:main

3、include file | mask; # 指明包含进来的其它配置文件片断
Syntax: include file | mask;
Default:—
Context:any
4、load_module file; # 指明要装载的动态模块
Syntax: load_module file;
Default:—
Context:main

性能相关的配置
1 worker_processes number | auto;worker进程的数量;通常应该等于小于当前主机的cpu的物理核心;auto:当前主机物理CPU核心数;

2 worker_cpu_affinity auto [cpumask];nginx进程的CPU亲缘性,就是把进程和cpu绑定,避免过多的上下文切换导致的系统性能开销

3 worker_priority number;指定worker进程的nice值,设定worker进程优先级;[-20,20]

调试、定位问题:

1、daemon on|off; # 是否以守护进程方式运行Nignx
Syntax: daemon on | off;
Default:daemon on;
Context:main

2、master_process on|off; # 是否以master/worker模型运行nginx;默认为on
Syntax: master_process on | off;
Default:master_process on;
Context:main

3、error_log file [level]; # 定义错误日志文件路径与级别
Syntax: error_log file [level];
Default:error_log logs/error.log error;
Context:main, http, mail, stream, server, location

事件驱动相关的配置:
events {

}
1、worker_connections number; # 每个worker进程所能够打开的最大并发连接数数量
Syntax: worker_connections number;
Default:worker_connections 512;
Context:events
worker_processes * worker_connections得出最大并发连接数
2、use method; # 指明并发连接请求的处理方法
Syntax: use method;
Default:—
Context:events
use epoll;

3、accept_mutex on | off; # 处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;建议使用on
Syntax: accept_mutex on | off;
Default:accept_mutex off;
Context:events

主配置文件结构:
main block:主配置段,也即全局配置段;

event {

}:事件驱动相关的配置;

http {

}:http/https 协议相关的配置段;

mail {

}

stream {

}
http协议的相关配置:

在这里插入图片描述

http配置段
http模块是最核心的模块了,它负责HTTP服务器相关属性的配置,它里面的server和upstream子模块,至关重要。

http_core官方文档
1 http {

… 各server的公共配置

 server { 每个server用于定义一个虚拟主机
          ...
 }

 server {
          ...
          server_name 虚拟主机名
          root 主目录
          alias 路径别名
          location [OPERATOR] URL { 指定URL的特性
          ...
          if CONDITION {
          ...
          }
  }

}

与server(虚拟主机)相关的配置
server { … }定义一个虚拟主机

2 server {
listen address[:PORT]|PORT; #虚拟主机监听的IP地址和端口
server_name SERVER_NAME; #虚拟主机host名称
root /PATH/TO/DOCUMENT_ROOT; #虚拟主机根目录
}

listen
listen address[:port] [default_server] [ssl] [http2 | spdy]
listen port [default_server] [ssl] [http2 | spdy
default_server:设置默认虚拟主机;用于基于IP地址,或使用了任意不能对应于任何一个server的name时所返回站点;
ssl:用于限制只能通过ssl连接提供服务;
spdy:SPDY protocol(speedy),在编译了spdy模块的情况下,用于支持SPDY协议;
http2:http version 2;

3 对keepalive模式下的连接是否使用TCP_NODELAY选项;
tcp_nopush on|off;
是否启用TCP_NOPUSH(FREEBSE)或TCP_CORK(Linux)选项;仅在sendfile为on时有用;
sendfile on|off;
是否启用sendfile功能;

4 location [ = | ~ | ~* | ^~ ] uri { … }
location @name { … }
功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;
server {

server_name www.mmagedu.co;
root /data/www;
location /admin/ {

}
}
=:URI的精确匹配;
~:做正则表达式匹配,区分字符大小写;
~*:做正则表达式匹配,不区分字符大小写;
^~:URI的左半部分匹配,不区分字符大小写;

				匹配优先级:精确匹配=、^~、~或~*、不带符号的URL;

index
index file …;
默认主页面;
eepalive_timeout timeout [header_timeout];
设定keepalive连接的超时时长;0表示禁止长连接;默认为75s;
keepalive_requests number;
在keepalived连接上所允许请求的最大资源数量;默认为100;
keepalive_disable none | browser …;
指明禁止为何种浏览器使用keepalive功能;
send_timeout #;
发送响应报文的超时时长,默认为60s;
client_body_buffer_size size;
接收客户请求报文body的缓冲区大小;默认为16k;超出此指定大小时,其将被移存于磁盘上;

client_body_temp_path path [level1 [level2 [level3]]];
设定用于存储客户端请求body的临时存储路径及子目录结构和数量;
client_body_temp_path  /var/tmp/client_body  2 2;		

基于IP的访问控制
1 功能模块:ngx_http_access_module

allow address | CIDR | unix: | all;

deny address | CIDR | unix: | all;

location / {
deny 192.168.1.10;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
可以用在配置段 http, server, location, limit_except
ngx_http_auth_basic_module模块的配置(basic认证)
auth_basic string | off;
使用http basic认证协议对用户进行认证;
可定义于location段
在这里插入图片描述

密令和用户可以可以使用htpasswd 创建 若是第一次创建需要加上-C 选项

在这里插入图片描述

Nginx status信息页
1 功能模块:ngx_http_stub_status_module

stub_status;在location上下文里调用该指令

location /basic_status {
stub_status;
}

Active connections: 200
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

Active connections: 活动状态的连接数;
accepts:已经接受的客户端请求的总数;
handled:已经处理完成的客户端请求的总数;
requests:客户端发来的总的请求数;
Reading:处于读取客户端请求报文首部的连接的连接数;
Writing:处于向客户端发送响应报文过程中的连接数;
Waiting:处于等待客户端发出请求的空闲连接数;

日志
功能模块:ngx_http_log_module
log_format name string …;定义日志内容格式,string可以使用nginx核心模块及其它模块内嵌的变量;

在这里插入图片描述

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]

access_log off;关闭访问日志
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];缓存各日志文件相关的元数据信息;
open_log_file_cache off;

url 重写
rewrite 指令
当用户访问某url时跳转到其他的url
URL rewrite:
rewrite regex replacement [flag];
last
break
redirect
permanent

flag标记说明:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
在这里插入图片描述

图中当访问 ’/‘ 下的任意文件都跳转至www.baidu.com

nginx 实现均衡负载
nginx 作为代理服务器
使用upstream 指令实现
upstream 定义在http 模块里面
在这里插入图片描述

在 location 下加入这一行
proxy_pass http://luo;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42635996/article/details/82784665