前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx ngx_http_core_module模块详解(三)

Nginx ngx_http_core_module模块详解(三)

作者头像
咻一咻
发布于 2020-05-29 07:29:30
发布于 2020-05-29 07:29:30
1K00
代码可运行
举报
文章被收录于专栏:咻一咻咻一咻
运行总次数:0
代码可运行

http协议相关的配置结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http {
    ...
    ...         #各server的公共配置
    server {    #每个server用于定义一个虚拟主机
        ...
    }
    server {     
        ...
        server_name   #虚拟主机名
        root          #主目录
        alias         #路径别名
        location [OPERATOR] URL {     指定URL的特性
            ...
            if CONDITION {
                ...
            }
        }
    }
}

ngx_http_core_module

模块的功能

模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server { ... }
    配置一个虚拟主机
    server {
        listen address[:PORT]|PORT; 
        server_name SERVER_NAME;
        root /PATH/TO/DOCUMENT_ROOT;
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILElisten address[:port] [default_server] [ssl] [http2 | spdy]  [backlog=number] [rcvbuf=size] [sndbuf=size]
    default_server #设定为默认虚拟主机
    ssl            #限制仅能够通过ssl连接提供服务
    backlog=number #超过并发连接数后,新请求进入后援队列的长度
    rcvbuf=size    #接收缓冲区大小
    sndbuf=size    #发送缓冲区大小
注意:
    (1) 基于port;
        listen PORT;  指令监听在不同的端口
    (2) 基于ip的虚拟主机
        listen IP:PORT; IP 地址不同
    (3) 基于host
        nameserver_name fqdn;  指令指向不同的主机名
    (4) default_server
        不加这个的话默认页面是/etc/nginx/conf.d 文件下排序的第一个配置文件为主

2、server_name name ...;
    虚拟主机的主机名称后可跟多个由空白字符分隔的字符串
    支持*通配任意长度的任意字符
        server_name *.a.com  www.a.*
    支持~起始的字符做正则表达式模式匹配,性能原因慎用
        server_name ~^www\d+\.a\.com$
        \d 表示[0-9]
    匹配优先级机制从高到低:
    (1) 首先是字符串精确匹配 如:www.a.com
    (2) 左侧*通配符 如:*.a.com 
    (3) 右侧*通配符 如:www.a.* 
    (4) 正则表达式  如:~^.*\.a\.com$ 
    (5) default_server

3、tcp_nodelay on | off;
    在keepalived模式下的连接是否启用TCP_NODELAY选项 
    当为off时,延迟发送,合并多个请求后再发送 
    默认On时,不延迟发送 
    可用位置:http, server, location

4、sendfile on | off;
    是否启用sendfile功能,在内核中封装报文直接发送默认Off
    可用位置:http, server, location, if in location

5、server_tokens on | off | build | string 
    是否在响应报文的Server首部显示nginx版本
    可用位置:http, server, location

示例1:虚拟主机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server{
    listen 80;
    server_name  www.a.com;
    root /data/web1/;
} #1、以server_name 定义虚拟主机
server{
    listen 192.168.109.143:98
    root /data/web2/;
} #2、以ip加端口定义虚拟主机

定义路径相关的配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
6、root
    设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径
    可用位置:http, server, location, if in location 
    server {
        ...
        root  /data/www/vhost1;
    }
    示例:
    http://www.a.com/images/logo.jpg 
        --> /data/www/vhosts/images/logo.jpg

7、location [ = | ~ | ~* | ^~ ] uri{ ... }
    location @name { ... } 
    在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置
    可用位置:server, location
    示例: 
    server {... 
        server_name www.a.com;
        location /images/ {
            root  /data/imgs/;
            } 
        } 
        http://www.a.com/images/logo.jpg  
            --> /data/imgs/images/logo.jpg #访问这个图片真实路径
    =:对URI做精确匹配;
    location = / { 
        ... 
    } 
        http://www.a.com/  匹配 
        http://www.a.com/index.html 不匹配
    ^~:对URI的最左边部分做匹配检查,不区分字符大小写
    ~:对URI做正则表达式模式匹配,区分字符大小写
    ~*:对URI做正则表达式模式匹配,不区分字符大小写
    不带符号:匹配起始于此uri的所有的uri
    匹配优先级从高到低:=, ^~,/*, 不带符号

    location = / {
        [ configuration A ]
    }

    location / {
        [ configuration B ]
    }

    location /documents/ {
        [ configuration C ]
    }

    location ^~ /images/ {
        [ configuration D ]
    }

    location ~* \.(gif|jpg|jpeg)$ {
        [ configuration E ]
    }

    示例:
        root /vhosts/www/htdocs/ 
        http://www.a.com/index.html
             --> /vhosts/www/htdocs/index.html

        server { 
            root  /vhosts/www/htdocs/ 
                location /admin/ { 
                    root /webapps/app1/data/ 
                    } 
            }
        http://www.a.com/admin/index.html 
            --> /webapps/app1/data/admin/index.html

8、alias path; 
    路径别名,文档映射的另一种机制
    仅能用于location上下文
    示例:
        访问: http://www.a.com/bbs/index.php 
        location /bbs/ { 
            alias /web/forum/; 
        }      --> 真实路径 /web/forum/index.html 
        location /bbs/ { 
            root /web/forum/; 
        }      --> 真实路径 /web/forum/bbs/index.html
    注意:location中使用root指令和alias指令的意义不同 
        (a) root, 给定的路径对应于location中的/uri/左侧的/ 
        (b) alias,给定的路径对应于location中的/uri/右侧的/



9、error_page code ... [=[response]]  uri; 
    模块:ngx_http_core_module 
    定义错误页,以指定的响应状态码进行响应 
    可用位置:http, server, location, if in location 
    error_page 404  /404.html 
    error_page 404  =200  /404.html
    示例:
    server{
        listen 80;
        server_name www.b.com;
        error_page  404    /404.html; #页面是404错误换成默认页面
        location /404.html {
            root    /data/error_html/;#默认页面是/data/error_html/404.html页面
        }
      root /data/web2;
    }  

    server{
        listen 80;
        server_name www.b.com;
        error_page  404 =200    /404.html; #=200意思是请求的页面状态码不会出现404404 变成200                                                        
    location /404.html {
        root    /data/error_html/;
    }
    root /data/web2;
}

10、try_files file ... uri; 
    try_files file ... =code; 
    可用位置:server, location
    按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误 
    location /images/ {   
        try_files $uri /images/default.gif; #找不到图片 默认图片代替 
    } 
    location / {
        try_files $uri $uri/index.html $uri.html =404;  
    }

定义客户端请求的相关配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
11、keepalive_timeout timeout [header_timeout]; 
    设定保持连接超时时长,0表示禁止长连接,默认为75s
    可用位置:http, server, location

12、keepalive_requests number; 
    在一次长连接上所允许请求的资源的最大数量 默认为100
    可用位置:http, server, location

13、keepalive_disable none | browser ... 
    对哪种浏览器禁用长连接
    可用位置:http, server, location

14、send_timeout time; 
    向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长.如果客户端在这段时间内没有收到任何东西,连接将被关闭
    可用位置:http, server, location

15、client_body_buffer_size size; 
    用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置
    可用位置:http, server, location

16、client_body_temp_path path [level1 [level2 [level3]]]; 
    设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量
    可用位置:http, server, location 
    目录名为16进制的数字; 
    client_body_temp_path /var/tmp/client_body 1 2 2
    1 1级目录占116进制,即2^4=16个目录0-f 
    2 2级目录占216进制,即2^8=256个目录00-ff 
    2 3级目录占216进制,即2^8=256个目录00-ff

对客户端进行限制的相关配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
17、limit_rate rate;
    限制响应给客户端的传输速率,单位是bytes/second 默认值0表示无限制
    可用位置:http, server, location, if in location

18、limit_except method ... { ... },仅用于location 
    限制客户端使用除了指定的请求方法之外的其它方法 
    method:GET, HEAD, POST, PUT, DELETE MKCOL, COPY, MOVE, OPTIONS, PROPFIND,PROPPATCH, LOCK, UNLOCK, PATCH 
    limit_except GET {
        allow 192.168.1.0/24; 
        deny  all; 
    } 除了GETHEAD之外其它方法仅允许192.168.1.0/24网段主机使用 

文件操作优化的配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
19、aio on | off | threads[=pool]; 
    是否启用aio功能 该指令出现在0.8.11版本中。
    可用位置:http, server, location

20、directio size | off; 
    是否同步(直接)写磁盘,而非写缓存,在Linux主机启用O_DIRECT标记,则文件大于等于给定大小时使用,例如:directio 4m 大于4M直接写磁盘
    可用位置:http, server, location

21、open_file_cache off; 
    open_file_cachemax=N [inactive=time]; 
    可用位置:http, server, location
    nginx可以缓存以下三种信息: 
    (1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间 
    (2) 打开的目录结构 
    (3) 没有找到的或者没有权限访问的文件的相关信息 
        max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
        LRU算法参考:http://blog.csdn.net/xiao_mrs_li/article/details/69257694
        inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项,将被删除

22、open_file_cache_errors on | off; 
    是否缓存查找时发生错误的文件一类的信息默认值为off
    可用位置:http, server, location

23、open_file_cache_min_uses number; 
    open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项 默认值为1 
    可用位置:http, server, location

24、open_file_cache_validtime; 
    缓存项有效性的检查频率默认值为60s
    可用位置:http, server, location

这里只写了几个ngx_http_core_module 模块参数更多请参考官网 地址链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
猿创征文 | 三款Python学习开发任选工具&两款数据库工具
为什么推荐社区版本呢,因为PyCharm Community为咱们普通学习以及开发人员几乎开放了所有功能,这个版本可以支持我们平时的所有操作,所以很推荐使用这个版本。我基本上就使用这个版本,而且提示内容也方便操作。
红目香薰
2022/11/30
3830
猿创征文 | 三款Python学习开发任选工具&两款数据库工具
看完这个,还不会【Python爬虫环境】,请你吃瓜
注:这里如果没有选系统的位置的话就得在项目中单独下载对应的库,下面我给了示例,如果不在乎的话是无所谓的最多再下载一遍也能用。
红目香薰
2023/01/13
5520
看完这个,还不会【Python爬虫环境】,请你吃瓜
世界杯——手动为梅西标名
我们使用的是Python语言,使用了Image包用作图片处理,matplotlib包用作坐标查阅,这个坐标还是很好看的,一目了然的X,Y轴。还有使用uuid来随机创建文件名称。
红目香薰
2022/12/05
4120
世界杯——手动为梅西标名
最长情的告白就是陪伴【Python七夕祝福】——那些浪漫的开始
七夕来袭!是时候展现专属于程序员的浪漫了!你打算怎么给心爱的人表达爱意?鲜花礼物?代码表白?还是创意DIY?或者…无论那种形式,快来秀我们一脸吧! 参与发布文章即可获得【话题达人】勋章,参与多个话题还可进行勋章升级喔!
红目香薰
2022/11/30
2580
最长情的告白就是陪伴【Python七夕祝福】——那些浪漫的开始
Python可视化数据分析09、MySQL读写
Python可视化数据分析09、MySQL读写 📋前言📋 💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝 ✍本文由在下【红目香薰】原创,首发于CSDN✍ 🤗2022年最大愿望:【服务百万技术人次】🤗 💝Python初始环境地址:【Python可视化数据分析01、python环境搭建】💝  ---- 环境需求 环境:win10 开发工具:PyCharm Community Edition 2021.2 数据库:MySQL5.6 目录
红目香薰
2022/11/30
3720
Python可视化数据分析09、MySQL读写
Python可视化数据分析01、python环境搭建
下载地址:Download PyCharm: Python IDE for Professional Developers by JetBrains
红目香薰
2022/11/30
3620
Python可视化数据分析01、python环境搭建
Linux CentOS安装Python全过程
3、安装wget,需要使用wget下载对应的python包,我python包选择的3.8的包。
红目香薰
2022/11/30
1.9K0
Linux CentOS安装Python全过程
走过岁月我才发现——云IDE真方便(Python3.8环境测试)
官方有IDE的产品介绍与IDE的使用教程,我先进行测试一下。在下面的文章有测试效果:
红目香薰
2022/11/30
3260
走过岁月我才发现——云IDE真方便(Python3.8环境测试)
Python考核内容
目标网站: https://www.51moot.net/main/course?search_id=0&is_free=-1&page_index=0 前置环境需求 pip3 config set
红目香薰
2022/11/30
3000
Python考核内容
猿创征文|Python基础——Visual Studio版本——DBHelper-MySQL版本
Python基础——Visual Studio版本——DBHelper-MySQL版本 前言 本节内容为方便大家复制,所有内容都写在了引用模块。 环境要求 pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple pip3 config list pip3 install --upgrade pip pip3 install pymysql DBHelper源码 import p
红目香薰
2022/11/30
3310
猿创征文|Python基础——Visual Studio版本——DBHelper-MySQL版本
机器学习筑基篇,​Ubuntu 24.04 编译安装 Python 及多版本切换
描述:说到机器学习,人工智能,深度学习不免会提到Python这一门编程语言(人生苦短,及时Python),Python是一门解释型、面向对象、动态数据类型的高级程序设计语言,使用Python可以非常便利的处理各种数据。
全栈工程师修炼指南
2024/07/16
2.2K0
机器学习筑基篇,​Ubuntu 24.04 编译安装 Python 及多版本切换
pip清华源安装_pip3换源
pip install –target=~/anaconda3/envs/my_envs/lib/python3.6/site-packages opencv-python==4.2.0.34 -i https://pypi.doubanio.com/simple
全栈程序员站长
2022/11/01
3.9K1
pypi pip 清华源使用帮助
https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
卓越笔记
2023/02/18
3.7K0
Tensorflow
##################################################################
Dean0731
2020/05/08
7500
2025最新 pip install 国内可用镜像源仓库地址(01月01日更新)
在 Python 开发 中,无论是安装常用库如 numpy、pandas,还是下载 AI 框架如 TensorFlow、PyTorch,使用 pip 时经常遇到下载速度慢、连接超时甚至失败的问题。这些问题在国内尤为突出,原因是国内与官方 PyPI 仓库的网络延迟较高。为了解决这个痛点,选择高效、稳定的 pip 国内镜像源 是提高开发效率的关键。🎉 本篇文章为大家带来 2025年1月最新 pip 国内可用镜像源仓库地址,包括清华大学、阿里云、腾讯云等顶级国内镜像源,详细介绍其配置方法与常见问题解答,助力您的 Python 开发之旅更加顺畅!💻
猫头虎
2025/01/03
12.9K0
pip镜像源配置,pip使用国内镜像源, pip禁用国外源,pip源配置
默认情况下 pip 使用的是国外的镜像,在下载的时候速度非常慢,本文我们介绍使用国内清华大学的源,地址为:
高久峰
2023/06/20
1.5K0
ubuntu build install python3.12 and config pip
eisc
2024/07/22
3890
pip基本命令和使用
pip是一个Python的包管理器,它允许你方便地安装、升级和删除Python库和工具。通过pip,你可以从Python Package Index(PyPI)中获取成千上万的第三方软件包,并将其安装到你的Python环境中。pip提供了简洁的命令行界面,使得管理Python包变得轻松和一致。它是Python生态系统中不可或缺的一部分,广泛应用于数据科学、Web开发、自然语言处理等领域。
红目香薰
2023/12/09
8050
pip基本命令和使用
python pip国内镜像安装方法以及pycharm换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
SingYi
2022/07/13
2.5K0
python pip国内镜像安装方法以及pycharm换源
python使用pip
两者的结果对于之后的时代而言,应该是没有区别的。毕竟python2已经结束了它的历史使命。我的系统执行这两条命令的结果是一样的。
zy010101
2021/09/06
1.2K0
推荐阅读
相关推荐
猿创征文 | 三款Python学习开发任选工具&两款数据库工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档