zoukankan      html  css  js  c++  java
  • Nginx基本配置

    1. Nginix基本配置框架

    a. 配置的几个顶级指令:

    • events – 一般连接处理
    • http – HTTP协议流量
    • mail – Mail协议流量
    • stream – TCP协议流量

    b. 配置文件:nginx安装目录下的 conf 文件夹内 nginx.conf 文件

    c. 基本结构如下:

    user nobody; # a directive in the 'main' context
    
    events {
        # configuration of connection processing
    }
    
    http {
    
        # Configuration specific to HTTP and affecting all virtual servers
    
        server {
            # configuration of HTTP virtual server 1
    
            location /one {
                # configuration for processing URIs with '/one'
            }
    
            location /two {
                # configuration for processing URIs with '/two'
            }
        }
    
        server {
            # configuration of HTTP virtual server 2
        }
    }
    
    stream {
        # Configuration specific to TCP and affecting all virtual servers
    
        server {
            # configuration of TCP virtual server 1 
        }
    }


     2. 设置虚拟服务器

    a. 基本结构:

    http {
        server {
            # Server configuration
        }
    }

    b. server基本机构:

    server {
        listen 80;
       server_name localhost;
    # The rest of server configuration
       location / {
         proxy_pass http://www.example.com;
       } }

    c. location配置:

    location指令有两种类型的参数:前缀字符串(路径名)和正则表达式。

    对于要匹配前缀字符串的请求URI,必须以前缀字符串开头:

    location /path/ {
        ...
    }

    正则表达式之前是区分大小写匹配的波形符号(~),或者不区分大小写匹配的波形符号(~*):

    location ~ .html? {
        ...
    }

    请求处理方式:

    1. 测试所有URI的前缀字符串。
    2. =(等号)修饰符定义了URI和前缀字符串完全匹配。如果找到完全匹配,则搜索停止。
    3. 如果^~(插入符号)修饰符预先添加最长匹配前缀字符串,则不会检查正则表达式。
    4. 存储最长匹配的前缀字符串。
    5. 根据正则表达式测试URI。
    6. 断开第一个匹配的正则表达式并使用相应的位置。
    7. 如果没有正则表达式匹配,则使用与存储的前缀字符串相对应的位置。

    location上下文可以包含定义如何解析请求的指令:

    server {
        location /images/ {
        # 静态文件文件系统路径 root
    /data; } location / {
        # 代理服务配置 proxy_pass http
    ://www.example.com; } }

    d. 重写URI请求

    可以通过使用rewrite指令在请求处理期间多次修改请求URI,您可以在locationserver上下文中包含多个rewrite指令。

    该指令具有一个可选参数和两个必需参数。 第一个(必需)参数是请求URI必须匹配的正则表达式。 第二个参数是用于替换匹配URI的URI。 可选的第三个参数是可以停止进一步重写指令的处理或发送重定向(代码301302)的标志。例如:

    server {
        ...
        rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last;
        rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  last;
        return  403;
        ...
    }

    此示例配置区分两组URI(正则匹配知识请自行补充,代码中颜色对应匹配,对号入座)。 诸如/download/some/media/file之类的URI更改为/download/some/mp3/file.mp3。由于最后一个标志,所以跳过后续指令(第二次rewritereturn指令),但NGINX继续处理该请求,该请求现在具有不同的URI。类似地,诸/download/some/audio/file的URI被替换为/download/some/mp3/file.ra。 如果URI与rewrite指令不匹配,则NGINX将403错误代码返回给客户端。

    有两个中断处理重写指令的参数:

    • last - 停止执行当前服务器或位置上下文中的重写指令,但是NGINX会搜索与重写的URI匹配的位置,并且应用新位置中的任何重写指令(URI可以再次更改,往下继续匹配)。
    • break - 像break指令一样,在当前上下文中停止处理重写指令,并取消搜索与新URI匹配的位置。新位置(location)块中的rewrite指令不执行。

    更多配置:重写http响应、错误处理、状态码配置、变量等:

    参考:https://www.yiibai.com/nginx/nginx-web-server.html#article-start

  • 相关阅读:
    HelloCSS-Border
    开发你的第一个NCS(Zephyr)应用程序
    NanoPi R4S (RK3399) openssl speed 硬件加解密性能测试结果
    Flink-状态
    Flink-时间语义和Watermark
    Flink-Window
    Flink-运行时架构
    Flink-流处理wordcount
    Flink-批处理wordcount
    设计模式七大原则-合成复用原则
  • 原文地址:https://www.cnblogs.com/yelao/p/9481802.html
Copyright © 2011-2022 走看看