装机配置怎么搭配

装机配置怎么搭配,第1张

这些nginx安装配置你了解吗?

Nginx主要用于配置Web服务器。抽象来说,把Nginx配置成Web服务器就是定义要处理哪些URL,以及如何处理这些URL对应的请求。具体来说,一些虚拟服务器被定义为控制具有特定IP和域名的请求。

更具体地说,Nginx通过定义一系列位置来控制uri的选择。每个位置定义了映射到自身的请求的处理场景:返回文件或代理请求,或者根据不同的错误代码返回不同的错误页。此外,根据URI的不同,请求还可以被重定向到其他服务器或位置。

设置虚拟服务器

听着:

Nginx配置文件包含至少一个用于定义虚拟服务器的服务器命令。当请求到来时,Nginx将首先选择一个虚拟服务器来处理请求。

虚拟服务器是在服务器的http上下文中定义的:

http{
  • 服务器{
  • #服务器配置
  • }
  • }

    注意:在http中可以定义多个服务器。

    服务器配置块使用listen命令监听本地IP和端口号(包括Unix域套接字和路径),支持IPv4和IPv6,IPv6地址需要用方括号括起来:

    服务器{
  • 听127.0.0.1:8080;#IPv4地址,端口8080
  • #听[2001:3ca1:10F:1A:121b:0:0:10]:80;#IPv6地址,端口80
  • #listen[::]:80;#侦听该计算机的所有IPv4和IPv6地址,端口80
  • #服务器配置的其余部分
  • }
  • 按照上面的配置,如果不写端口号,默认使用端口80;不写IP就监听本机所有IP。

    服务器名称:

    如果多个服务器的监听IP和端口号相同,Nginx会在请求头中传递主机。

    与server_name定义的主机名进行比较,来选择合适的虚拟服务器处理请求: 服务器{
  • 听80;
  • lufficc.com·www.lufficc.com;
  • }

    server_name的参数可以是:

    1.完整的主机名,例如api.lufficc.com。

    2.它包含通配符(包括*),如:*.luffcc.com或api。*.

    3.正则表达式,以~开头。

    通配符只能在开头或结尾,并且只能与一个相邻..Www。*.example.org和w*.example.org都无效。但是,您可以使用正则表达式来匹配这些名称,例如~www\..+\.示例\。org$和~w.*\。示例\。org$。和*可以匹配多个部分。*.example.org这个名字不仅符合www.example.org,也符合www.sub.example.org。

    对于正则表达式:Nginx使用的正则表达式与Perl编程语言(PCRE)使用的正则表达式兼容。要使用正则表达式,它必须以~开头。

    命名正则表达式可以捕获变量,然后使用:

    服务器{
  • 服务器名~^(www\.)?(?<域>。+)$;
  • 位置/{
  • root/sites/$domain;
  • }
  • }

    括号()之间的匹配内容也可以后面用引用,表示上面第二个()中的内容。因此,上述内容也可以写成:

    服务器{
  • 服务器名~^(www\.)?(.+)$;
  • 位置/{
  • root/sites/$2;
  • }
  • }

    服务器名称的示例:

    服务器{
  • 听80;
  • server_nameapi.lufficc.com*.luffICC.com;
  • }

    同样,如果有多个名称与主机头匹配,Nginx将按以下顺序被选中:

    1.完整的主机名,例如api.lufficc.com。

    2.以*开头的最长通用名,如:*.luffcc.com。

    3.以*结尾的最长通用名,如api。*.

    4.第一个匹配的正则表达式。(按照配置文件中的顺序)

    即优先级:api.lufficc.com>:*.luffICC.com>;api。*>规律性。

    如果主机头与任何server_name都不匹配,Nginx会将请求路由到默认的虚拟服务器。虚拟服务器是指:nginx.conf文件中或用default_server显式声明的第一台服务器:

    服务器{
  • 监听80default_server
  • }
  • 配置位置

    匹配URI和位置参数

    选择服务器后,Nginx会根据URIs选择合适的位置来决定是请求还是返回文件。

    位置指令接受两种类型的参数:

    1.前缀字符串(路径名)

    2.正则表达式

    对于前缀字符串参数,URIs必须严格使用它。例如,对于/some/path/参数,它可以匹配/some/path/document.html,但不匹配/my-site/some/path,因为/my-site/some/path不是以/some/path/开头的

    服务器{
  • 监听80default_server
  • }
  • 对于正则表达式,以~开头表示区分大小写,以~*开头表示不区分大小写。请注意。在路径中应该写成\..例如,匹配以结尾的URI的位置。html或者。htm:

    位置~\。html?{
  • }

    正则表达式优先于前缀字符串。如果找到匹配的前缀字符串,正则表达式搜索将继续,但如果前缀字符串以~开头,则不会再次检查正则表达式。

    具体搜索匹配过程如下:

    1.将URI与所有前缀字符串进行比较。

    2.=修饰符表示URI必须等于前缀字符串(不是开头,而是等于)。如果找到了,搜索就会停止。

    3.如果找到的最长前缀匹配字符串以~开头,则不再搜索正则表达式匹配。

    4.存储匹配的最长前缀字符串。

    5.测试并比较URIs和正则表达式。

    6.找到第一个匹配的正则表达式后停止。

    7.如果没有匹配的正则表达式,则使用对应于存储在4中的前缀字符串的位置。

    =修饰符的优先级最高。如果网站首页被频繁访问,我们可以专门定义一个位置来减少搜索匹配的次数(因为找到带=decoration的匹配位置搜索就会停止),提高速度:

    位置=/{
  • }

    静态文件和代理

    位置还定义了如何处理匹配的请求:返回静态文件或者将它们交给代理服务器进行处理。在以下示例中,第一个位置返回/data目录中的静态文件,第二个位置将请求传递给https://lufficc.com域名服务器进行处理:

    服务器{
  • 位置/图像/{
  • 根/数据;
  • }
  • 位置/{
  • proxy_passhttps://lufficc.com;
  • }
  • }

    root指令定义静态文件的根目录,它与URI拼接在一起形成最终的本地文件路径。如果请求/images/example.png,它将被拼接并返回到本地服务器文件/data/data/images/example.png。

    proxy_pass指令将请求传递给URL指向的代理服务器。让将响应从代理服务器转发到客户端。在上面的示例中,所有不是以/images/开头的URIs请求都将被传递到代理服务器进行处理。

    比如我设置proxy_pass为https://www.baidu.com/,我访问http://search.lufficc.com/会得到和百度首页一样的响应(页面)(感兴趣的童鞋可以自己试试搜索功能,和百度的没什么区别):

    服务器{
  • 听80;
  • 服务器名search.lufficc.com;
  • 位置/{
  • proxy_passhttps://www.baidu.com;
  • }
  • }

    使用变量

    您可以使用变量让Nginx以不同的方式处理不同的请求。变量在运行时计算,并用作指令的参数。变量由以$开头的符号表示。变量Nginx根据状态定义信息,比如当前处理的请求的属性。

    有许多预定义的变量,比如核心的HTTP变量。您也可以使用set、map和geo命令来定义自定义变量。大多数变量在运行时被计算,并且包含与特定请求相关的信息。例如,$remote_addr包含客户端IP地址,而$URI保存当前的URI值。

    一些常用的变量如下:

    一个简单的应用是使用路径信息从http重定向到https:

    服务器{
  • 返回301https://luffICC.com$request_uri;
  • }

    返回特定的状态代码

    如果您网站上的某些资源被永久删除,最快捷、最简洁的方法是使用return命令直接返回:

    位置/错误/url{
  • 返回404;
  • }

    return的第一个参数是响应代码。可选的第二个参数可以是重定向的URL(对应于代码301、302、303和307)或响应正文中返回的文本。例如:

    位置/永久/移动/url{
  • 返回301http://www.example.com/moved/here;}
  • 返回指令可以包含在位置和服务器上下文中:

    服务器{
  • 位置/{
  • 返回404;
  • }
  • }

    或者:

    服务器{
  • 返回404;
  • 位置/{
  • }
  • }

    错误处理

    error_page命令可以配置特定错误代码的错误页面或重定向到另一个页面。当发生404错误时,下面的示例将返回/404.html页。

    error_page404/404.html;

    error_page命令定义了如何处理错误,所以它不会直接返回,而return会立即返回。当代理服务器或Nginx处理相应的错误代码时,会返回相应的错误页面。

    在下面的例子中,当Nginx找不到页面时,它会用代码301替换代码404,并将客户端重定向到http://example.com/new/path.html.。这个配置很有用。例如,当客户端仍然试图使用旧的URI访问页面时,301代码通知浏览器该页面已被永久删除,需要自动替换为返回的新地址。

    location/old/path.html{
  • error_page404=301http:/example.com/new/path.html;
  • }

    重写URIs

    重写指令可以多次修改请求的URI。rewrite的第一个参数是URI需要匹配的正则表达式,第二个参数是要替换的URI。第三个参数是可选的,指示重定向代码(301或302)是否可以重写或返回。例如:

    位置/用户/{
  • 重写^/users/(.*)$/show?user=break
  • }

    您可以在服务器和位置的上下文中包含多个重写指令。Nginx按照指令出现的顺序逐一执行指令。当选择服务器时,服务器中的重写命令将被执行一次。

    Nginx处理一组重写指令后,根据新的URI选择位置。如果所选位置仍然包含重写指令,它们将被依次执行。如果URI匹配全部,则在处理完所有定义的重写指令后,搜索新的位置。

    以下示例将rewrite指令与return指令一起使用:

    服务器{
  • 重写^(/download/.*)/media/(。*)\..*$/mp3/.mp3最后;
  • 重写^(/download/.*)/audio/(。*)\..*$/MP3/.ralast;
  • 返回403;
  • }

    将/download/some/media/file等URI更改为/download/some/mp3/file.mp3,由于最后一个标志,后续指令(第二个重写指令和返回指令)被跳过,但Nginx继续用更改后的URI处理请求。同样,URIs如/download/some/audio/file被替换为/download/some/mp3/file.ra,如果URI与重写指令不匹配,Nginx会向客户端返回403错误代码。

    last和break的区别是:

  • 最后:停止在当前服务器或位置上下文中执行重写指令,但Nginx继续搜索与重写的URI匹配的位置,并在新位置应用任何重写指令(这意味着URI可能会再次改变)。
  • 中断:停止当前上下文中重写指令的处理,并取消对与新URI匹配的位置的搜索。不会执行新位置的重写命令。
  • 欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/zz/744511.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-04-29
    下一篇 2022-04-29

    发表评论

    登录后才能评论

    评论列表(0条)

    保存