• nginx使用与配置入门指南


    这是一篇关于nginx使用与配置的入门指南,但不包括nginx的编译与安装。我假定你知晓如何安装nginx。对大多数Linux系统来说,nginx都已经存在于它们的软件包里,直接使用系统提供的软件管理工具安装即可。

    nginx根据配置文件决定如何工作。配置文件的目录一般可能在以下几个位置:/usr/local/nginx/conf, /etc/nginx, /usr/local/etc/nginx。

    启动,停止和重读配置文件

    直接运行执行文件就可以启动nginx了。启动后,可通过-s参数控制它:

    nginx -s signal

    这个signal和Linux系统里的signal不是一回事。它可取以下几个值:

    • stop - 快速关闭
    • quit - 妥善关闭
    • reload - 重读配置文件
    • reopen - 重新打开日志文件

    stop和quit的区别在于,quit会等待当前正在进行的所有服务完成后才退出。

    如果你修改了配置文件,可以通过下面的命令让nginx重读配置:

    nginx -s reload

    在这条命令之后,对每一个新的请求,都将使用新的配置文件,而该命令前未完成的请求仍使用已有配置。

    静态内容服务配置

    nginx安装好后,已经提供了默认的配置文件。观察默认的配置文件我们可以发现,它是由嵌套的配置块组成,每个配置块都由一对大括号标记。最醒目的就是server块,用于标记一个服务器:

    server {
        listen 80;                             # 监听端口。一行以分号结尾;注释标记与bash一样
        server www.example.com;  # 网站名称
    }

    现在nginx知道对于服务器www.example.com:80要使用上面的server块,但还不知道如何解析URI。我们在server块内部添加location块:

    server {
        listen 80;                             # 监听端口。一行以分号结尾;注释标记与bash一样
        server www.example.com;  # 网站名称
        location / {
            root /data/www
        }
    }

    nginx比较location后面的内容(“/”)和http请求中的URI。如果匹配,那么就将URI附加到root字符串的后面,作为所请求的资源在本地文件系统中的位置。例如对于http请求www.example.com/abc/index.html,对应本地文件系统的位置在/data/www/abc/index.html。

    如果一个server块内有多个location,那么将匹配最长的那个。我们可以利用这点,将不同的资源防止不同的位置。例如,我们将所有图片放在了/data/images,并且希望当浏览器送出http://www.example.com/images时从该目录读取文件,那么location块就是下面这个样子:

    location /images/ {
        root /data
    }
    这里要注意的是,匹配过程只进行一次(最长匹配),如果在本地文件系统中没有找到请求的资源,那么将响应喜闻乐见的404,而不会尝试较短的匹配。

    作为代理服务器

    nginx的常用方式之一是将其作为代理服务器:接收请求,将请求传递给被代理的服务器,接收响应,将响应发送给客户端。

    下面我们来配置一个基本的代理服务器:它使用本地文件系统来服务图片请求,将其它请求转发到后端服务器。

    首先我们新增一个server块:

    server {
        listen 8080;
        root /data/upl;
        location / {
        }
    }

    这个服务器使用端口8080。我们将root小节写在了sever块中而不是location块,对于没有root段的location,将使用server块里的root。

    现在让我们回到上一个server。我们需要识别所有的图像文件(我们假定图像文件只有三种:gif,jpg,png)。修改后的location如下:

    location ~.(gif|jpg|png)$ {
        root /data/images;
    }

    我们看到了熟悉的正则表达式:这个location匹配任何以gif或jpg或png结尾的URI。正则表达式必须以“~”符号作为前缀。

    nginx首先检查最长匹配的location块并记住,然后检查正则表达式。如果正则表达式匹配,则使用其中的locaiton;否则就使用刚记住的最长匹配location块。

    最终的代理服务器配置如下:

    server {
        location / {
            proxy_pass http://localhost:8080/;
        }

        location ~ .(gif|jpg|png)$ {
            root /data/images;
        }
    }

  • 相关阅读:
    异常
    JAVA Math类
    Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结
    JAVA之JDBC数据库连接池总结篇
    利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等
    python3 最基本且简单的实现组合设计模式
    原生工程接入Flutter实现混编
    a[i][j] 和 a[j][i] 有什么区别?
    iconv函数报错 Detected an illegal character in input string
    用Python把20年的GDP、人口以及房价数据进行了可视化
  • 原文地址:https://www.cnblogs.com/byeyear/p/11913890.html
Copyright © 2020-2023  润新知