nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解

1.nginx介绍

1丶俄罗斯人开发的,开源www服务软件
2丶软件一共780K
3丶nginx本身是一款静态(html,js,css,jpg等)www软件
4丶静态小文件高并发,同时占用的资源很少,
5丶nginx使用平台:unix,linux,windows都可以
6丶官网:http://nginx.org

2.nginx应用场景

1丶静态处理
2丶反向代理
3丶负载均衡
4丶资源缓存
5丶安全防护
6丶访问限制
7丶访问认证

3.nginx特性

1丶基于I/O多路复用,I/O复用解决的是并发性的问题,socket作为复用
2丶I/O多路复用使用epool模型
3丶轻量级(功能模块少,代码模块少)
4丶CPU亲和(cpu核心和nginx的worker线程绑定,极少cpu切换时间)
5丶sendfile(在内核中操作,函数直接在两个文件描述符之间传递数据简称零拷贝,减少内核缓冲区和用户缓冲区之间的拷贝)

4.nginx目录结构

# tree -L 1 /usr/local/nginx 	
├── client_body_temp							//客户端临时文件
├── conf										//nginx配置文件目录
├── fastcgi_temp
├── html										//nginx站点目录
├── logs										//nginx访问日志和错误日志以及进程pid
├── modules										//nginx模块目录
├── proxy_temp									//代理临时目录
├── sbin										//二进制程序目录
├── scgi_temp
└── uwsgi_temp

5.nginx的常用模块

查看模块:nginx -v
ngx_http_core_module 							//包含⼀些核⼼的http参数配置,对应Nginx的配置区块部分
ngx_http_access_module							//访问控制模块,⽤来控制⽹站⽤户对Nginx的访问
ngx_http_gzip_module 							//压缩模块,对Nginx返回的数据压缩,属于性能优化模块
ngx_http_fastcgi_module 						//fastci模块,和动态应⽤相关的模块,例如PHP
ngx_http_proxy_module 							//proxy代理模块
ngx_http_upstream_module						//负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查。nginx自带的健康状态不好用
ngx_http_rewrite_module 						//URL地址重写模块
ngx_http_limit_conn_module 						//限制用户并发连接数及请求数模块
ngx_http_limit_req_module 						//限制Nginx request processing rate根据定义的key
ngx_http_log_module 							//访问日志模块,以指定的格式记录Nginx客户访问日志志等信息
ngx_http_auth_basic_module						//Web认证模块,设置Web用户通过账号密码访问Nginx
nginx_http_ssl_module 							//ssl模块,用于加密的http连接,如https
ngx_http_upstream_check_module					//tengine开发的健康状态检查的模块

6.nginx常用内置变量:代表着客户端请求头的内容

$uri											//当前请求的uri,不带参数
$request_uri									//请求的uri,带完整参数
$host											//http请求报文中host首部,如果没有则以处理此请求的虚拟主机的主机名代替
$hostname										//nginx服务运行在主机的主机名
$remote_addr									//客户端IP
$remote_port									//客户端端口
$remote_user									//使用用户认证时客户端用户输入的用户名
$request_filename								//用户请求中的URI经过本地root或alias转换后映射的本地文件路径
$request_method									//请求方法,	GET	POST PUT
$server_addr									//服务器地址
$server_name									//服务器名称
$server_port									//服务器端⼝
$server_protocol								//服务器向客户端发送响应时的协议,	如http/1.1	http/1.0
$scheme											//在请求中使用scheme,如http://xxx.com中的http
$http_HEADER									//匹配请求报文中指定的HEADER
$http_host										//匹配请求报文中的host首部
$document_root									//当前请求映射到的root配置
$time_local										//服务器时间(LOG Format 格式) 
$request										//客户端的请求地址
$status											//HTTP响应代码
$http_user_agent								//客户端代理信息,浏览器类型
$http_x_forwarded_for 							//相当于网络访问路径

7.URL和URI

URL						//统一资源定位,实际上就是主机地址,www.baidu.com 
URI 					//统一资源标识符,所有的URL都是URI的子集,邮箱地址是URI 

8.http状态码

作用:通过状态码可以判断服务器状态
301						//永久重定向,被请求的资源已被永久移动位置
302						//请求的资源现在临时从不同的URI响应请求
307						//临时跳转,被请求的资源临时从不同的URL响应请求
400						//错误请求
403						//禁止访问,服务器已经理解请求,但是拒绝执行它
404						//找不到对象,请求失败,资源不存在
413						//响应实体太大,服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值
500						//服务器内部错误
502						//请求后端失败,后端服务器down机
504						//请求成功,但是响应超时

9.nginx配置文件详解

worker_processes  1;											//工作进程,配置和CPU个数保持一致
//events事件模块
events {														//事件模块
    worker_connections  1024;									//每个worker进程支持的最大连接数
	use epoll;													//使用epoll模型
}
//非虚拟主机的配置或公共配置定义在http{}段内,server{}段外
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
//必须使用虚拟主机配置站点,每个虚拟主机使用1个server{}段
    server {
        listen       80;										//监听端口,	默认80
        server_name  localhost;									//提供服务的域名或主机名
        location / {											//控制网站访问路径
            root   html;										//存放网站路径
            index  index.html index.htm;						//默认访问首页文件
        }
//指定错误代码,	统一定义错误业务,错误代码重定向到新的Locaiton
        error_page 404  500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
//第二个虚拟主机配置
	server {
		.....
	}
}
posted @ 2018-05-17 16:47  你很棒  阅读(229)  评论(0编辑  收藏  举报