加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

你真的相识怎样将 Nginx 设置为Web处事器吗

发布时间:2018-09-01 09:20:12 所属栏目:业界 来源:今日头条
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 阅读之前,提议先阅读初识 Nginx。 之后,我们来相识一下 Nginx 设置。 抽象来说,将 Nginx 设置为 Web 处事器就是界说处理赏罚哪些 URLS 和如那里理赏罚这些URLS 对应的哀求。详细来说,就
副问题[/!--empirenews.page--] 技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战

阅读之前,提议先阅读初识 Nginx。 之后,我们来相识一下 Nginx 设置。

抽象来说,将 Nginx 设置为 Web 处事器就是界说处理赏罚哪些 URLS 和如那里理赏罚这些URLS 对应的哀求。详细来说,就是界说一些假造处事器(Virtual Servers),节制具有特定 IP 和域名的哀求。

更详细的来说, Nginx 通过界说一系列 locations 来节制对 URIS 的选择。每一个 location 界说了对映射到本身的哀求的处理赏罚场景:返回一个文件可能署理哀求,可能按照差异的错误代码返回差异的错误页面。其它,按照 URI 的差异,哀求也可以被重定向到其余 server 可能 location 。

你真的相识怎样将 Nginx 设置为Web处事器吗

配置假造处事器

listen:

Nginx 设置文件至少包括一个 server 呼吁 ,用来界说假造处事器。当哀求到来时, Nginx 会起首选择一个假造处事器来处理赏罚该哀求。

假造处事器界说在 http 上下文中的 server 中:

  1. http { server { # Server configuration 

留意: http 中可以界说多个 server

server 设置块行使 listen 呼吁监听本机 IP 和端标语(包罗 Unix domain socket and path),支持 IPv4、IPv6,IPv6地点必要用方括号括起来:

server { listen 127.0.0.1:8080; # IPv4地点,8080端口

# listen [2001:3CA1:10F:1A:121B:0:0:10]:80; # IPv6地点,80端口

# listen [::]:80; # 听本机的全部IPv4与IPv6地点,80端口

# The rest of server configuration}

上述设置,假如不写端标语,默认行使80端口,假如不写 IP ,则监听本机全部 IP。

server_name:

假如多个 server 的 listen IP 和端标语千篇一律, Nginx 通过哀求头中的 Host

你真的相识怎样将 Nginx 设置为Web处事器吗

与 server_name 界说的主机名举办较量,来选择吻合的假造处事器处理赏罚哀求:

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

server_name 的参数可觉得:

  • 完备的主机名,如:api.lufficc.com 。
  • 含有通配符(含有 *),如:*.lufficc.com 或 api.* 。
  • 正则表达式,以 ~ 开头。

通配符只能在开头或末了,并且只能与一个 . 相邻。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 { server_name ~^(www.)?(?<domain>.+)$; location / { root /sites/$domain;  
  2. }  

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

  1. server { server_name ~^(www.)?(.+)$; location / { root /sites/$2; 

一个 server_name 示例:

  1. server { listen 80; 
  2. server_name api.lufficc.com *.lufficc.com; 
  3. ... 

同样,假如多个名称匹配 Host 头部, Nginx 回收下列次序选择:

  • 完备的主机名,如 api.lufficc.com。
  • 最长的,且以 * 开头的通配名,如:*.lufficc.com。
  • 最长的,且以 * 末了的通配名,如:api.* 。
  • 第一个匹配的正则表达式。(凭证设置文件中的次序)

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

假如 Host 头部不匹配任何一个 server_name ,Nginx 将哀求路由到默认假造处事器。默认假造处事器是指:nginx.conf 文件中第一个 server 可能 显式用 default_server 声明:

  1. server { server_name ~^(www.)?(.+)$; location / { root /sites/$2; 

设置 location

URI 与 location 参数的匹配

当选择好 server 之后,Nginx 会按照 URIs 选择吻合的 location 来抉择署理哀求可能返回文件。

location 指令接管两种范例的参数:

  • 前缀字符串(路径名称)
  • 正则表达式

对付前缀字符串参数, URIs 必需严酷的以它开头。譬喻对付 /some/path/ 参数,可以匹配/some/path/document.html ,可是不匹配 /my-site/some/path,由于 /my-site/some/path 不以/some/path/ 开头。

  1. location /some/path/ {  
  2. ...  

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读