设为首页 - 加入收藏 洛阳站长网 (http://www.0379zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 什么 Html 欧元 也要
当前位置: 首页 > 亚博体育app官方下苹果 > 外闻 > 正文

你真的了解如何将Nginx配置为Web服务器吗

发布时间:2018-12-21 03:01 所属栏目:[外闻] 来源:lufficc.com
导读:副标题#e# 抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求。具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求。 更具体的来说, Nginx 通过定义一系列 locations 来控制对 UR

抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求。具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求。

更具体的来说, Nginx 通过定义一系列 locations 来控制对 URIS 的选择。每一个 location 定义了对映射到自己的请求的处理场景:返回一个文件或者代理请求,或者根据不同的错误代码返回不同的错误页面。另外,根据 URI 的不同,请求也可以被重定向到其它 server 或者 location 。

你真的了解如何将Nginx配置为Web服务器吗

设置虚拟服务器

listen:

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

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

  1. http?{????
  2. ????server?{????
  3. ????????#?Server?configuration????
  4. ????}????
  5. }?

注意: http 中可以定义多个 server

server 配置块使用 listen 命令监听本机 IP 和端口号(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括号括起来:

  1. server?{????
  2. ????listen?127.0.0.1:8080;??#?IPv4地址,8080端口????
  3. ????#?listen?[2001:3CA1:10F:1A:121B:0:0:10]:80;???#?IPv6地址,80端口????
  4. ????#?listen?[::]:80;??#?听本机的所有IPv4与IPv6地址,80端口????
  5. ????#?The?rest?of?server?configuration????
  6. }?

上述配置,如果不写端口号,默认使用80端口,如果不写 IP ,则监听本机所有 IP。

server_name:

如果多个 server 的 listen IP 和端口号一模一样, Nginx 通过请求头中的 Host

你真的了解如何将Nginx配置为Web服务器吗

与 server_name 定义的主机名进行比较,来选择合适的虚拟服务器处理请求:

  1. server?{????
  2. ????listen??????80;????
  3. ????server_name?lufficc.com??www.lufficc.com;????
  4. ????...????
  5. }?

server_name 的参数可以为:

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

2、含有通配符(含有 *),如:*.lufficc.com 或 api.* 。

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

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

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

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

  1. server?{????
  2. ????server_name???~^(www\.)?(?.+)$;????
  3. ?
  4. ????location?/?{????
  5. ????????root???/sites/$domain;????
  6. ????}????
  7. }?

小括号 () 之间匹配的内容,也可以在后面通过 $1 来引用,$2 表示的是前面第二个 () 里的内容。因此上述内容也可写为:

  1. server?{????
  2. ????server_name???~^(www\.)?(.+)$;????
  3. ?
  4. ????location?/?{????
  5. ????????root???/sites/$2;????
  6. ????}????
  7. }?

一个 server_name 示例:

  1. server?{????
  2. ????listen??????80;????
  3. ????server_name?api.lufficc.com??*.lufficc.com;????
  4. ????...????
  5. }?

同样,如果多个名称匹配 Host 头部, Nginx 采用下列顺序选择:

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

2、最长的,且以 * 开头的通配名,如:*.lufficc.com。

3、最长的,且以 * 结尾的通配名,如:api.* 。

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

即优先级:api.lufficc.com > *.lufficc.com > api.* > 正则。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章