深入理解Nginx~虚拟主机与请求的分发

1、监听端口

语法: listen address:port[default(deprecated in 0.8.21)|default_server|[backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ipv6only=[on|off]|ssl]]; 
默认: listen 80;
配置块: server示例
listen 127.0.0.1:8000;
listen 127.0.0.1; #注意:不加端口时,默认监听80端口
listen 8000;
listen *:8000;
listen localhost:8000;listen 443 default_server ssl;
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;

·default:将所在的server块作为整个Web服务的默认server块。如果没有设置这个参数,
那么将会以在nginx.conf中找到的第一个server块作为默认server块。

·default_server:同上。

·backlog=num:表示TCP中backlog队列的大小。默认为–1,表示不予设置。

·rcvbuf=size:设置监听句柄的SO_RCVBUF参数。

·sndbuf=size:设置监听句柄的SO_SNDBUF参数。

·accept_filter:设置accept过滤器,只对FreeBSD操作系统有用。

·deferred:在设置该参数后,若用户发起建立连接请求,并且完成了TCP的三次握手,
内核也不会为了这次的连接调度worker进程来处理,只有用户真的发送请求数据时(内核已
经在网卡中收到请求数据包),内核才会唤醒worker进程处理这个连接。

·bind:绑定当前端口/地址对,如127.0.0.1:8000。只有同时对一个端口监听多个地址时
才会生效。

·ssl:在当前监听的端口上建立的连接必须基于SSL协议。

2、主机名称

语法: server_name name[...];
默认: server_name "";
配置块: server

在开始处理一个HTTP请求时,Nginx会取出header头中的Host,与每个server中的
server_name进行匹配,以此决定到底由哪一个server块来处理这个请求。

server_name与Host的匹配优先级如下:

1)首先选择所有字符串完全匹配的server_name,如www.testweb.com 。
2)其次选择通配符在前面的server_name,如*.testweb.com。
3)再次选择通配符在后面的server_name,如www.testweb.* 。
4)最后选择使用正则表达式才匹配的server_name,如~^\.testweb\.com$。

如果Host与所有的server_name都不匹配,这时将会按下列顺序选择处理的server块。

1)优先选择在listen配置项后加入[default|default_server]的server块。
2)找到匹配listen端口的第一个server块。

3、server_names_hash_bucket_size

语法: server_names_hash_bucket_size size;
默认: server_names_hash_bucket_size 32|64|128;
配置块: http、server、location

        为了提高快速寻找到相应server name的能力,Nginx使用散列表来存储server name。server_names_hash_bucket_size设置了每个散列桶占用的内存大小。

4、server_names_hash_max_size

语法: server_names_hash_max_size size;
默认: server_names_hash_max_size 512;
配置块: http、server、location

        server_names_hash_max_size会影响散列表的冲突率。server_names_hash_max_size越大,消耗的内存就越多,但散列key的冲突率则会降低,检索速度也更快。

5、重定向主机名称的处理

语法: server_name_in_redirect on|off;
默认: server_name_in_redirect on;
配置块: http、server或者location

该配置需要配合server_name使用。在使用on打开时,表示在重定向请求时会使用server_name里配置的第一个主机名代替原先请求中的Host头部,而使用off关闭时,表示在重定向请求时使用请求本身的Host头部。

6、location

语法: location[=|~|~*|^~|@]/uri/{...}
配置块: server

location会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。当然,匹配方式是多样的,下面介绍location的匹配规则。

1)=表示把URI作为字符串,以便与参数中的uri做完全匹配

2)~表示匹配URI时是字母大小写敏感的。
3)~*表示匹配URI时忽略字母大小写问题。
4)^~表示匹配URI时只需要其前半部分与uri参数匹配即可

5)@表示仅用于Nginx服务内部请求之间的重定向,带有@的location不直接处理用户请
求。

在uri参数里是可以用正则表达式的

location ~* \.(gif|jpg|jpeg)$ {# 匹配以.gif、.jpg、.jpeg结尾的请求…
}

        注意,location是有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。

        在最后一个location中使用/作为参数,它会匹配所有的HTTP请求,这样就可以表示如果不能匹配前面的所有location,则由“/”这个location处理。

location / {# /可以匹配所有请求…
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物学将是下一代计算平台:DNA是代码,CRISPR是编程语言

来源:36氪每一个行业都在向Crispr投入大量的资金——制药、农业、能源、材料制造。甚至连那些大麻贩子都想砸钱进去。机器里面,运行的并不是由0和1组成的互联网编码,而是能重写生命密码的分子。日前,《连线》杂志发表了一篇文章&a…

还是重新回博客园

很长一段时间没有写博客了,因为这段时间做网管,没有怎么编程的缘故,倒是也写有了几个小工具。 原本打算在google的app engine上搭建一个博客,还不容易在windows上搭建好Google App Engine开发平台,没想到时不时出现访问…

Python 中使用 jsonpath

JSONPath 解析 JSON 内容详解(翻译自 github):https://blog.csdn.net/freeking101/article/details/103048514 JSONPath Online Evaluator:http://jsonpath.com Python 处理 JSON 我选择 ujson 和 orjson:https://bl…

【重磅】吴恩达宣布 Drive.ai 自动驾驶汽车服务落地 理想就这样成了现实!

来源: 网易智能美国当地时间5月7日,硅谷无人车创业公司 Drive.ai 宣布将于2018年7月在德克萨斯州弗里斯科市提供自动驾驶汽车服务。这或许会成为美国第一个真正落地的自动驾驶汽车载人服务,也标志着公众第一次有机会在公共道路上使用按需定制…

深入理解Nginx~文件路径的定义

1、以root方式设置资源路径 语法: root path; 默认: root html; 配置块: http、server、location、if eg.定义资源文件相对于HTTP请求的根目录 location /download/ {root optwebhtml; } 在上面的配置中,如果有一个请求的URI是…

小甲鱼 OllyDbg 教程系列 (八) :fjproducer 逆向 之 困境

小甲鱼 OllyDBG 教程:https://www.bilibili.com/video/av30969642?p15 程序下载地址: https://pan.baidu.com/s/1xTBrvuAx6hsyHQ2RsYiCoA 提取码: 11sd 打开程序显示如下: 可以看到标题栏的 Flash Jigsaw Produce (unregistered),可以根…

在sharepoint中添加视频播放

年初的时候想把公司举办的春晚发布在sharepoint中供大家观看,但是视频文件太大了,放到文档库中存储到数据库中是一个不切实际的办法,后来就搁置了。 其实也一直在想优酷等视频网站的发布方式,但没能得到解答。最近无意中发现了网页…

深入理解Nginx~网络连接的设置

1、读取HTTP头部的超时时间 语法: client_header_timeout time(默认单位:秒); 默认: client_header_timeout 60; 配置块: http、server、location 如果在一个时间间隔(超时时间)内没…

佛祖保佑永无BUG 神兽护体 代码注释(各种版本)

佛祖保佑 永无BUG 注释 1: /*_ooOoo_o8888888o88" . "88(| -_- |)O\ /O____/---\____. \\| |// ./ \\||| : |||// \/ _||||| -:- |||||- \| | \\\ - /// | || \_| \---/ | |\ .-\__ - ___/-. /___. . /--.--\ . . __.&qu…

打破国外垄断,我国拿下一项“制芯”关键技术

来源:科技日报“PM2.5,是大家很熟悉的微小颗粒物,直径小于或等于2.5微米。但我们研制这种制造芯片的关键材料,在过程中如果进入了哪怕PM1.0的粉尘,这个材料就是废品,就不能被应用到芯片当中。”唐一林唐一林…

离婚从来不是解决家庭危机的唯一办法

离婚从来不是解决家庭危机的唯一办法——跟“快乐女人编辑”网友贴作者:独孤醒狮或许真的是场误会,他又不方便跟你解释。退一万步,即便真的是他错了,你也应该给予些宽容。我也是男人,可以和你透句心窝窝里的话&#xf…

西电焦李成教授解读《高等学校人工智能创新行动计划》

来源:砍柴网不久之前,教育部公布了《高等学校人工智能创新行动计划》(以下简称计划),计划在人工智能人才培养、产学研等方面有哪些亮点?人工智能领域学科建设前景如何?针对公众关注的问题&#…

Git 和 Github 秘籍

GitHub秘籍 Git 和 Github 秘籍,灵感来自于 Zach Holman 在 2012 年 Aloha Ruby Conference 和 2013 年 WDCNZ 上所做的演讲:Git and GitHub Secrets(slides) 和 More Git and GitHub Secrets(slides)。 其他语言版本: English, 한국어, 日本語, 简体中…

Guava入门~Monitor

线程同步 1、在线程上调用wait()方法,并使用while循环; while(someCondition){try {wait();} catch (InterruptedException e) {//In this case we dont care, but we may want//to propagate with Thread.interrupt()} } 2、notifyAll()唤醒阻塞的线…

在窗体上画图,并响应手标事件的实例

只是简单地处理了一下利用paint事件和mousemove事件复杂的就要多考虑了随机画几个图形并响应手标 源码地址:在窗体上画图,并响应手标事件的实例转载于:https://www.cnblogs.com/jiamao/archive/2011/01/29/1947345.html

为什么人类大脑与众不同?这种模式动物或揭开大脑体积演化之谜

来源 | HOWARD HUGHES MEDICAL INSTITUTE翻译 | 周盈宵审校 | 常玮导语:通过使一个与人类小头畸形相关的基因失活,研究人员得到第一只神经系统变异的雪貂。霍华德休斯医学研究所(HHMI)的研究者Christopher Walsh说,尽管…

小甲鱼 OllyDbg 教程系列 (七) :VB 程序逆向分析

小甲鱼视频:https://www.bilibili.com/video/av6889190?p14 VB程序逆向反汇编常见的函数:https://www.cnblogs.com/bbdxf/p/3780187.html 程序下载地址:链接:https://pan.baidu.com/s/18igiL-YWn9wnIrJfKT8gBA 提取码&…

如何搭建一个 Data Guard 环境

在Blog里零零散散的讲了一些DB 维护的东西,比较杂,也比较散。 这里就Oracle Data Guard 这块做一个小结。 主要是流程上的东西。 做个参考,以后装DG,照这个流程走就ok了。 一. 服务器设置1.1 硬盘的规划根据自己的业务量来规划硬…

一文尽揽2018 Google I/O:谷歌让你感受到AI科技的魅力

来源:智者无疆摘要:今年的主角依然是AI人工智能,它已经融入谷歌产品与软件系统中,但这次,谷歌在讲解AI或产品功能时候从理解人类和人性的角度举例,把AI带到了科技与人文的十字路口上。5月9日凌晨消息&#…

小甲鱼 OllyDbg 教程系列 (六) :PJ 软件功能限制(不修改jnz的非爆破方法)

小甲鱼视频地址:https://www.bilibili.com/video/av6889190?p13 小甲鱼OD学习第9讲:https://www.bbsmax.com/A/x9J23xEM56/ 程序下载地址:https://pan.baidu.com/s/1JTQ32xIBV6XiPtuXsOIgiw 提取码: r5t4 这次我们的任务是 pj 去掉注册软…