3. Nginx web server配置

图片 1

原标题:nginx 1.17.7 主线版公布 来源:开源中黄炎子孙民共和国nginx
会同期爱慕着四个支行,分别为 mainline 主线版和 stable 牢固版。但是在
nginx
中,“牢固”指的是功用和换代频率,它与软件品质毫不相关。稳固分支在其生命周期中未有选择新职能,而且普通仅收受二个或五个立异,用于修复严重的不当。nginx
1.17.7(mainline version)发表了,此版本主即便修复
bug,退换内容如下:Bugfix:假设在配备中应用了包涵空替换字符串的”rewrite”指令,则恐怕在开发银行或重新配置时期发面生段错误Bugfix:假诺将”break”指令与”alias”指令或含有
U景逸SUVI 的”proxy_pass”指令一同利用,则只怕在 worker
进程中发生疏段错误Bugfix:假如要求 U哈弗I 被重写为带有空字符的
U哈弗I,则”Location”的响应 header
行只怕带有垃圾Bugfix:使用”error_page”指令回到重定向时,带有正文的伸手会被错误管理;该错误在
0.7.12 中现身过Bugfix:使用 HTTP/2 时现身 socket 泄漏的图景Bugfix:在
SSL 连接中拍卖流程恳求时也许会发出超时; 该错误在 1.17.5中冒出过Bugfix: in the ngx_http_dav_module.下载地址 | 更新表明

编译自:
nginx-web-server

增多虚构服务器

Nginx配置文件中足足含有一条定义虚构服务器的server命令。当Nginx管理二个乞请时,第二个被选中的虚构服务器将用来拍卖该供给。

假造服务器通过http命令中的server指令来定义,示举例下:

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

http中能够分包多条server命令来定义四个虚拟服务器。

通常server一声令下中会满含一条listen一声令下,用于钦命该虚构服务器将要监听的IP地址和端口。示譬如下:

server {
    listen 127.0.0.1:8080;
    # 其他配置
}

如果不填写端口,则利用规范端口。若是不填写ip地址,则监听全数地方。借使远远不足整条listen指令,则标准端口是80/tcp,私下认可端口是8000/tcp,由一级顾客的权力决定。

只要有三个server配置了扳平的ip地址和端口,Nginx会相配server_name命令与央求底部的host字段。server_name命令的参数能够是纯正的文书、通配符或正则表达式。通配符能够在字符串的头顶、后面部分或两端富含**能够合营任性字符。Nginx选用Perl格式的正则表达式,以~最初。以下是八个标准相称的例证:

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

只要有多个server_name匹配host字段,Nginx依照以下准绳采纳第贰个相相称的server拍卖伏乞:

  1. 确切相称
  2. *起头的最长通配符,如*.example.org
  3. *终极的最长通配符,如mail.*
  4. 首先个杰出的正则表明式(依据在配置文件中冒出的前后相继顺序)

只要找不到别的与host字段相匹配的server_name,Nginx会根据央求端口将其发送给私下认可的server。暗中认可server就是配置文件中首先个冒出的server,也能够透过default_server内定某些server为暗中同意server,如下所示:

server {
    listen      80 default_server;
    ...
}
  • Bugfix:假如在安排中央银行使了含有空替换字符串的”rewrite”指令,则大概在运营或重新配置时期产生疏段错误

  • Bugfix:假设将”break”指令与”alias”指令或带有 U传祺I
    的”proxy_pass”指令一同利用,则或然在 worker 进度中发出分段错误

  • Bugfix:若是央浼 U奥迪Q5I 被重写为包涵空字符的 UEvoqueI,则”Location”的响应
    header 行恐怕满含放任物

  • Bugfix:使用”error_page”指令回到重定向时,带有正文的号召会被错误管理;该错误在
    0.7.12 中现身过

  • Bugfix:使用 HTTP/2 时现身 socket 泄漏的情事

  • Bugfix:在 SSL 连接中拍卖流程央浼时大概会产生超时; 该错误在
    1.17.5 中现身过

  • Bugfix: in the ngx_http_dav_module.

目录

配置Location指令

Nginx依据UCRUISERL将呼吁发送给不一样的代理,或拍卖差异的文件须要。由server指令中的location命令配置法规。

比方,可以为假造服务器配置几个location指令,将有些伸手发送给代理服务器#1,将别的一些号令发送给代理服务器#2,再由当三步跳件系统管理剩余央求。

Nginx会将央求的U智跑L相称全体的location一声令下,请执行相称location中的指令。每一种location一声令下中平淡无奇还只怕会包罗多条更是精致相称的location指令。

location命令富含两类参数:前缀字符串正则表达式。诉求要合营前缀字符串的话,必需早先缀字符串带头。

以下例子中location参数相配以/some/path/始发的伸手U宝马X5I,如/some/path/document.html(不匹配/my-site/some/path,因为/some/path不在开头地方)。

location /some/path/ {
    ...
}

~用于相配区分朗朗上口写的正则表达式,~*用于相配不区分轻重缓急写的正则表明式。下边例子相配大肆包括.html.htm的URI。

location ~ \.html? {
    ...
}

Nginx先相配前缀字符串,然后再匹配正则表明式。正则表明式具备较高优先级,除非动用^~修饰符。在有着前缀字符串中,Nginx会筛选最可信赖的百般,也正是最长最相配的足够。详细相称进度如下:

  1. 同盟全数前缀字符串;
  2. 生机勃勃旦有二个=概念的纯粹相配前缀字符串,结束继续协作;
  3. 如果^~在最长相称的前缀字符串以前,将忽视正则表明式;
  4. 积存最长的相称前缀字符串;
  5. 万分正则表明式;
  6. 找到第叁个相相配的正则表明,停止相称进度,并奉行该location指令;
  7. 少年老成旦未有正则表达式相称,则应用第4部存储的最长前缀字符串;

=修饰符的优越应用是匹配
/倡议。针对每每拜候/的情况,将location参数设置为= /能够加速管理进度,因为整个相配进程在率先条之后就得了了。

location = / {
    ...
}

location一声令下内足以安插哪些管理恳求:管理静态文书档案或将诉求转载给代理服务器。在下边包车型大巴例子中,相配第二个location的号令能够访问/data目录的文本,相配第二个location的乞求将被转发到www.example.com服务器。

server {
    location  {
        root /data;
    }

    location / {
        proxy_pass http://www.example.com;
    }
}

其中root一声令下钦赐了静态文件的文件系统路线,将与央浼U昂科雷I一齐构成静态文件的通通路径。在上述例子中,央浼xample.png将再次来到服务器上位居/dataxample.png的文件。

proxy_pass指令将号令转载到代理服务器,并将代理服务器的响应重回给顾客端。在上述例子中,全部不是以“最初的U大切诺基I央求都将被转载到代理服务器。

下载地址 | 改革表达

  • 制造设想服务器
  • 配置 location
  • 接受变量
  • 回来钦命的状态码
  • URI 重写
  • 对 HTTP Response 进行重写
  • 管理错误

利用变量

经过在安插文件中动用变量,能够让Nginx以分歧的点子管理央浼。变量的值在运维时总计拿到,并可看作参数字传送递给指令。变量必得以$起初。变量基于Nginx的场所定义音信,如正被处理诉求的质量。

Nginx包涵众多预设的变量,如core HTTP变量集,也能够选拔setmapgeo命令来自定义变量。大多数变量都在运维时总括值,这一个值日常都包蕴有个别央求的连带音信。如$remote_addr包含了IP地址,而uri则带有了当下拜候的URI

此处有两个录像,风野趣能够看看:nginx
安装与调优,此中描述了以下主旨:

归来钦赐状态码

多少网站在管理错误或重定向时,会需求登时回到叁个状态码。最简易的点子正是应用return命令,如下所示:

location /wrong/url {
    return 404;
}

return指令的率先个参数是叁个状态码。第贰个是可选参数,能够是重定向的UKoleosL(当状态码是301、302、303和307时),也得以是回来的文书音讯。示举例下:

location /permanently/moved/url {
    return 301 http://www.example.com/moved/here;
}

locationserver中都可以分包return指令。

  • nginx 怎么着使您的接收能更加快响应、具有更加好的紧缩性、更加快、更安全?
  • 什么设置 nginx
  • 为 nginx 调度操作系统参数

重写诉求中的U昂科雷I

在处理央求进度中,可以经过rewrite指令重复修正央浼的UKugaI。rewrite一声令下包罗2个必填参数和1个可选参数。第一个参数是倡议U奥德赛I必需合营的正则表明式。第二个参数是要替换的靶子U福特ExplorerI。第多个为可选参数,能够是叁个是或不是继续试行后续rewrite指令的标记,也得以发送多个重定向指令(状态码是301或302State of Qatar。示举个例子下:

location /users/ {
    rewrite ^/users/(.*)$ /show?user=$1 break;
}

locationserver中都能够包罗几个rewrite指令。Nginx从上到下依次磁性rewrite命令,每一趟步向server一声令下块时,rewrite指令都会被实行二遍。

Nginx试行完一文山会海rewrite命令后,依据新型的UKoleosI来挑选location指令。如果location中也暗含rewrite一声令下,它们也将被每个实施,施行实现后将重新采用location

上边是三个rewritereturn一起协作利用的例子。

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

其大器晚成例子用于区分两套不相同的U帕杰罗I。形似于/download/some/media/file的U本田UR-VI将被改写为/download/some/mp3/file.mp3。由于最终的标记last,Nginx将忽略随后的两条指令,然后以新的UTiggoI继续管理央求。相仿地,近似于/download/some/audio/file的U奥迪Q3I将被改写为/download/some/mp3/file.ra。若是央浼UPRADOI都不兼容上述两条rewrite一声令下,Nginx将赶回403错误代码。

rewrite一声令下能够包蕴以下二种参数,用于中断管理进度:

  • last –
    结束实践当前serverlocation中的rewrite指令,并以新的UOdysseyI查找新的location;
  • break –
    停止推行业前上下文境况内的rewrite命令,并不以新的UTiggoI查找新的location;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图