• 一、nginx配置


    一、nginx配置

    1. 配置简介

    1)nginx相关目录

    工作目录:/etc/nginx
    执行文件:/usr/sbin/nginx
    日志目录:/var/log/nginx
    启动文件:/etc/init.d/nginx
    web目录:/var/www/html/,首页文件是index.nginx-debian.html
    2)nginx配置文件

    默认文件:
    /etc/nginx/nginx.conf
    其他目录:
    /etc/nginx/{sites-enabled/conf.d}
    文件结构:
    全局配置段
    http配置段
    server配置段 # 项目或者应用
    location配置段 # url配置

    1. nginx访问过程原理

    2. nginx配置详解
      3.1 全局配置段
      主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:

    user # 设置使用用户(worker)
    worker_processes # 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个
    pid # nginx服务启动时候pid
    events # 定义事件相关的属性
    worker_connections # 一个进程允许处理的最大连接数
    use # 定义使用的内核模型
    3.2 http配置段
    主要配置server通用的一些配置:

    include mime.types; # 文件扩展名与文件类型映射表
    default_type application/octet-stream; # 默认文件类型
    sendfile on; # 开启高效文件传输模式。
    autoindex on; # 开启目录列表访问,合适下载服务器,默认关闭。
    tcp_nopush on; # 防止网络阻塞
    tcp_nodelay on; # 防止网络阻塞
    keepalive_timeout 120; # 长连接超时时间,单位是秒
    gzip on; # 开启gzip压缩输出
    3.3 server配置段
    常见样式:

    server {
    listen :;
    server_name <主机域名>;

    }

    注:server配置段最重要的属性是listen和server_name,它们都是用于匹配并处理请求的。

    1)listen属性

    作用:定义server监听的ip和port,当ip和port匹配时候才进行下一步匹配。

    ip:port 地址精确表示样式 listen 10.10.10.10:99 listen 10.10.10.10:99
    ip 自动监听 ip:80地址 listen 10.10.10.10 listen 10.10.10.10:80
    port 自动监听 全地址:port listen 99或 [::]:99 listen 0.0.0.0:99
    default_server 自动使用默认的地址 listen default_server listen localhost:80
    使用原则:

    首先将所有样式补全成ip:port,然后匹配,如果匹配server多,那么接着使用server_name匹配。

    2)server_name属性

    作用:定义server监听的域名,当域名匹配时候才进行下一步操作。

    形式 www.example.com .example.com www.example. _
    使用原则:

    优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则。 非法域名/IP,表示请求到该主机上一个不存在的IP或者域名。

    3)root属性

    作用:定义客户端请求的html文件所在目录路径。
    表现形式:root /var/www/html;

    4)index属性

    作用:定义客户端请求时默认返回的文件。
    表现形式:index index.html index.htm index.nginx-debian.html;

    3.4 location配置段
    location主要是根据server匹配到的请求路径去处理和响应。

    前提: 根据请求完整url,获取uri(即:除了域名(IP)、Port和路径参数之外的部分),用于location匹配。

    语法:

    location optional_modifier location_match {
    # 执行操作…
    }
    其中:optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作。

    1)匹配规则

    = /路径 精确匹配 前缀 1 location = /image {}
    ^~ 优先匹配 前缀 2 location ^~ /page {}
    ~ 普通正则-大小写敏感 正则符号 3 location ~ .(jpe?g)$ {}
    ~* 普通正则-大小写不敏感 正则符号 3 location ~* .(jpe?g)$ {}
    空 / 通用匹配 前缀 4 location / {}
    空 <路径> 前缀匹配 前缀 * location /index {}
    2)匹配优先级

    优先级:精确匹配>location 完整路径>优先匹配>正则匹配>location 部分路径>通用匹配

    3)匹配示例

    location = / { location ~ .(gif|jpg|png|js|css)$ {
    #精确规则A #正则规则D
    } }
    location = /login { location ~* .png$ {
    #精确规则B #正则规则E
    } }
    location ^~ /static/ { location / {
    #优先规则C #通用规则F
    } }
    访问效果如下:

    访问 http://a.com/ 将匹配规则A
    访问 http://a.com/login 将匹配规则B
    访问 http://a.com/static/a.html 将匹配规则C
    访问 http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D
    访问 http://a.com/static/c.png 则优先匹配到规则C
    访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写
    访问 http://a.com/category/id/1111 则最终匹配到规则F
    3.5 location核心动作
    Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

    1)指令语法

    try_files file … uri
    try_files file … =code
    作用:响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)。

    2)常见示例

    如果能找到指定的uri那么就返回相应的内容,否则的话返回错误状态码404

    location / {
    try_files $uri $uri/ =404;
    }

    如果能找到指定的文件1/2.html那么就返回相应的内容,否则的话返回6.html文件内容

    location / {
    try_files 1.html 2.html /6.html;
    }

    如果能找到指定的uri那么就返回相应的内容,否则的话就内部重定向到后端名称为@backup的location

    location / {
    try_files $uri @backup;
    }
    location @backup {
    # …do something
    }
    注意:如果最后一个地址是一个uri的话,那么这个uri必须是存在的,否则的话就出事了。

    3.6 location常见操作
    在location内部常用的功能属性非常多,常见的基本属性、临时跳转、目录列表等。

    1)基本属性

    location / {
    # 指定响应请求的文件所在路径
    root /var/www/html;
    # 指定响应请求的默认文件名称
    index index.php index.html index.htm;
    # 指定响应请求的文件浏览器缓存过期时间,一般用于静态文件
    expires 7d;
    # 如果root指定的路径下有查找的文件,就返回,否则报404
    try_files $uri $uri/ =404;
    }
    2)临时跳转

    location = /test/ {
    return 302 http://www.itcast.cn/;
    }
    3)目录列表

    location /upload {
    # 指定查看文件列表路径(绝对路径)
    alias /var/www/upload/;
    # 开启目录自动索引
    autoindex on;
    # 默认on,显示文件确切大小(bytes)。off表示显示文件的大概大小(kB/MB/…)
    autoindex_exact_size off;
    # 默认off,显示的文件时间为GMT时间。on表示显示文件的服务器时间
    autoindex_localtime on;
    }
    注:alias路径结尾必须加/。

    3.7 其他说明
    1)root VS alias

    root 和 alias 所起的作用都是指定响应请求文件所在的路径,只是它们有区别。

    root 表示 location 匹配内容的相对路径
    alias 表示 一个绝对路径。

    一般情况下,在location /中配置root,在location /other中配置alias。

    效果一: 效果二:
    location /txt/ { location /txt/ {
    alias /var/www/txt/; root /var/www/txt/;
    } }
    效果一:访问http://localhost/txt/1.txt,nginx找/var/www/txt/1.txt文件
    效果二:访问http://localhost/txt/1.txt,nginx找/var/www/txt/txt/1.txt文件

    2)关于URL尾部的/有如下注意事项

    • location中的location_match字符有无"/"不受影响,/user/等同/user。

    • 对于访问网站域名(http://www.smartli.cn/),尾部有无"/“不受影响,因为浏览器会自动补全”/"。

    • 对于访问网站域名后面的路径(http://www.smartli.cn/other/),尾部的"/“很重要。
      访问URL尾部的”/“表示目录,没有”/"表示文件,而且文件找不到的话,会发生重定向。

    • /other/:表示服务器会自动去该目录下找对应的默认文件。

    • /other:表示服务器会先去找other文件,找不到的话会将other当成目录,重定向到/other/,去该
      目录下找默认文件。
      总结:

    配置文件结构:全局配置段、http配置段、server配置段、location配置段
    server配置段
    listen:server监听的ip和port
    server_name:server的域名
    location配置段
    匹配优先级:精确匹配>location 完整地址>优先匹配>正则匹配>location 部分地址>通用匹配
    root和alias
    root:相对目录
    alias:绝对目录

    【淘宝】https://m.tb.cn/h.566klSo?tk=M6kbWYQpGrJ CZ0001 「pycharm专业版mian费激活,永久使用。」
    点击链接直接打开 或者 淘宝搜索直接打开

  • 相关阅读:
    Docker常见面试题整理
    Unity 分享 功能 用Unity Native Share Plugin 实现链接、图片、视频等文件的分享+ 安卓 Ios 都可以,代码图文详解
    华为云大数据BI 为中小型企业智慧运营保驾护航
    Kubernetes教程(五)---Service 的几种访问方式
    mysql 忘记密码后重置
    APISIX 成为 Apache 项目两周年!
    二分图及其衍生
    JVM基本概念、命令、参数、GC日志总结
    2023八股每日一题(九月份)
    第2章Linux基础篇-VM和Linux的安装
  • 原文地址:https://blog.csdn.net/weixin_45014634/article/details/133866014