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 {
.....
}
}

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

  1. Python-组织结构-目录结构、包导入、__init__文件、模块内置变量、* 导入限制

    __pycache__ .pyc文件,中间代码,提升python运行效率 目录 分档和归类 Python项目组织结构 包 模块 类 函数.变量 # 层级依次往下都是一对多关系 Python项目目录结构 ...

  2. Nginx核心模块内置变量

    本文根据Nginx官网整理了Nginx的ngx_http_core_module模块的内置变量,可与Apache做对比参考.随后做了一次测试观察各变量的值,并附上测试结果. 1.变量列表 $arg_n ...

  3. shell 脚本中常用的内置变量

    在 Bash 解释器中,内置了许多变量,这些变量的功能是解释器自带的,我们在编写shell脚本时如果能灵活的使用它们,对脚本的编写效率以及差错大有帮助, 下面一一介绍这些变量 $FUNCNAME.$L ...

  4. jmeter常用的内置变量

    1. vars   API:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html vars.get(& ...

  5. beanshell 常用的内置变量与函数

    官方详细文档:https://github.com/beanshell/beanshell/wiki log:用来记录日志文件 log.info("jmeter"); vars - ...

  6. Python - 常用内置变量

    直接上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 这是注释__doc__会打印这部分内容 "&qu ...

  7. MySQL常用内置变量

      MySQL用很多常用的内置变量,掌握这些内置变量后对于我们快速获取当前MySQL的配置有很大帮助,下面就来列举几个常用的变量. 查看当前MySQL版本号信息.show variables like ...

  8. Locust源码目录结构及模块作用

    Locust源码目录结构及模块作用如下: 参考文章:https://blog.csdn.net/biheyu828/article/details/84031942

  9. nginx之echo模块与内置变量

    Nginx扩展第三方模块——echo 第三方模块是对nginx的功能扩展,第三方模块需要在编译nginx的时候使用参数--add-module=PATH指定扩展模块的源码包路径给Nginx扩展添加ec ...

随机推荐

  1. DFS搜索题素数环

    素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 ...

  2. Leetcode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

    1.题目描述 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构. 注意: 允许出现重复元素. insert(val):向集合中插入元素 val. remove(val):当 va ...

  3. synchronize 和volatile 实现共享变量在多线程中的可见性

    1.什么是线程可见性 可见性:一个线程对共享变量值的修改能够及时被其他线程看到. 共享变量:如果一个变量在多个线程工作内存中都存在副本,那么着给按量就是这几个线程的共享变量. 2.导致共享变量在线程间 ...

  4. CMDB资产管理系统开发【day26】:CMDB上节回顾

    一.上节知识点回顾 服务器设计了一个表结构 开发了一个客户端 二.后台创建缓存区表 客户端连接服务器,在服务器的下面看报错信息 因为URL都没有写,所以我找不到呀 1.在MadKing\url.py ...

  5. LAMP环境介绍

    LAMP简介: Lamp是一组常用于来搭建动态网站或者服务器的开源软件平台,Linux apache mysql perl或php. Linux :提供操作系统 Apache:Web服务器 Mysql ...

  6. [LeetCode][Facebook面试题] 通配符匹配和正则表达式匹配,题 Wildcard Matching

    开篇 通常的匹配分为两类,一种是正则表达式匹配,pattern包含一些关键字,比如'*'的用法是紧跟在pattern的某个字符后,表示这个字符可以出现任意多次(包括0次). 另一种是通配符匹配,我们在 ...

  7. wcf 服务创建,配置,测试

    一.WCF创建: 常规的创建WCF服务是通过SOAP传输的,很多网站开发人员想放弃使用XML而使用JSON,这个时候可以参照:http://www.cnblogs.com/zhili/p/WCFRes ...

  8. iOS 时间转换

    #pragma mark - 获取当前时间戳 -(NSString *)getTimeSp{ NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:]; ...

  9. UOJ#204 【APIO2016】Boat

    Time Limit: 70 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 248 Description 在首尔城中,汉江横贯东西.在汉江的北岸,从西向 ...

  10. Vue 使用中的小技巧(山东数漫江湖)

    在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发.下面有一些我在日常开发的时候用到的小技巧,在下将不定期更新~ 1. 多图表resize事件去中心 ...