Nginx常见典型故障话|| C/C++/Linux干货

为什么nginx里面有的是浏览器渲染出的页面,有的时候就变成下载文件?

这个一个取决于服务端nginx,一个取决于你浏览器。在Nginx服务端的配置文件目录下,有一个mime.types文件,内容如下

这里,如text/html格式的字符串就是用来说明数据类型的,/前的是主类型,/之后的是该主类型下的子类型。详细的类型定义在RFC2046中。Nginx通过服务器端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入HTTP头部的Content-Type字段中,发送给客户端比如,当我们打开一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:服务器上有test.png这个文件,后缀名是png;根据mime.types,这个文件的数据类型应该是image/png;将Content-Type的值设置为image/png,然后发送给客户端。我们在Chrome浏览器中可以看到这个文件返回的头部信息,并对应的宣传出来,如果不能识别则设置为下载文件。

multi_accept on的作用是什么?能不能通用配置?

这个数值默认就是on建议采用默认设置, multi_accept的作用是告诉nginx收到一个新连接通知后接受尽可能多的连接,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。

同一台机器通过进程socket文件快还是通过localhost:9000这个方式快?彼此之间各有什么坑吗?

这两个模式不一样,一般对于程序联系更为紧密的,可以使用进程间共享内存调用,这样效率更高。Socket方式如果,两个进程是松耦合的,那么用接口调用模式更佳。IP:PORT方式当前,我们对于系统设计讲究松耦合,微服务的模式,所以版本通过api接口模式调用更为广泛应用。

nginx +tomcat 后台服务响应内容比较大,日志报"an upstream response is buffered to a temporary file"的warn,通常这种情况需要配置网站的 Proxy Buffer相关的参数,但proxy buffer相关的参数,我应该配置多大合理

这个buffer缓冲区设置是根据实际的 Response 大小来定,假设你是这么设置的:

fastcgi_buffers85K;fastcgi_buffer_size5K;#那么内存的缓存区最大能缓存的大小是 5K * 8 = 40K,如果Nginx代理的后台页面超过这个大小,那就会出现这个错误。#因为,频繁的写硬盘会影响性能,所以这个参数还是值得适当的根据实际情况优化的

关于try_files,怎么在生产中真正结合缓存,代理用?如下例:

我们可以用后台程序将缓存信息生成到$document_root/app/cache/目录下,它将检测,$document_root/app/cache/index.html 和$document_root$uri是否有静态缓存生成的文件存在,如果不存在着内部重定向到@fallback(@表示配置文件中预定义标记点)。

nginx在配置https时,如何匹配某个URL地址不做https跳转,如下例:


使用nginx负载均衡时,如何将后端请求超时的服务器流量平滑的切换到另一台上。

如果后台服务连接超时,Nginx是本身是有机制的,如果出现一个节点down掉的时候,Nginx会更据你具体负载均衡的设置,将请求转移到其他的节点上,但是,如果后台服务连接没有down掉,但是返回错误异常码了如:504、502、500,这个时候你需要加一个负载均衡的设置,如下:proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;意思是,当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。

如何使用nginx的proxy_next_upstream将nginx错误页面返回json

需求是除了404 页面,其他的错误页面都要返回 json,而且在外界看来是正常的,所以说白了就是后端服务器返回了我定义的错误状态码,需要在nginx这里做一个转换,转换到 200,用户看到的是200,其实是将错误的状态码定向至200,然后再次调度到/api。

负载均衡配置,当挂掉一台服务时,不能流畅地切换

需求:在配置负载均衡时,后端三台web,手动关闭一个web 服务,当轮询到这台关停的时候,总是要卡顿很久?


Nginx如何封掉真实恶意攻击的IP地址

配置Nginx,仅允许公司网络地址能访问公司后台/admin,其他网络访问返回403错误。

Linux系统的65535端口限制是如何来的?

在TCP、UDP协议的开头,会分别有16位来存储源端口号和目标端口号,所以端口个数是2^16-1=65535个。TCP端口数65535的限制,这个是由TCP/IP协议栈中的第四层运输层UDP/TCP协议决定的.在UDP/TCP协议中源端口和目的端口都只有16位,也就是说端口的取值范围为0~65535。

四层负载均衡与七层负载均衡误区?

四层负载均衡不受系统套接字限制,可以承载的并发量可以远远超过65535,这是因为四层在OSI协议中处于较低的层级,其并非在用户空间,而是在内核空间,是由TCP/IP协议栈处理的!

而七层负载均衡是在应用层进行负载均衡,应用层位于OSI协议中的最高层,也就是最接近用户,其维护连接数要受到系统套接字的限制,Linux默认最多可以使用的套接字就65535个,这是系统的限制……更重要的是每个客户端请求到达服务器,服务器处理的时候都是自最下层往上一次拆封数据包的,最上面的应用层需要处理更多的工作,因此其必然承载的并发量不如四层多!

但需要注意七层负载均衡可以进行更复杂的控制,比如session会话保持,URL规则控制等,功能比四层更全面!至于四层和七层可以处理的并发量有多大,这个和硬件密切相关,不同配置的服务器,差异较大,没有准确的量化指标!

如何为Nginx配置错误页面?

当我们只有单台web服务器时,需要配置错误返回页面,可以使用error_page来指定。

如何为nginx反向代理设置自定义错误页面,包含proxy、fastcgi

Nginx如何禁止IP直接访问?

当用户通过访问IP或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500,目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。

也可以将流量集中导入自己的网站,只要做以下跳转设置就可以



Nginx指定路径时,root与alias区别在哪?

root与alias路径匹配主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上,alias是一个目录别名的定义,root则是最上层目录的定义。root的处理结果是:root路径+location路径alias的处理结果是:使用alias路径替换location路径1.root路径配置实例: 用户访问http://www.xuliangwei.com/image/test.gif,实际上Nginx会上/code/image/目录下找去找test.gif文件

alias配置实例: 用户访问http://www.xuliangwei.com/image/test.gif,实际上Nginx会上/code/目录下找去找test.gif文件。

为什么通过IP地址访问Nginx,有时候访问的不是我想要的页面呢?

在开始处理一个http请求时,nginx会取出header头中的Host变量,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server来处理这个请求。但nginx如配置多个相同的server_name,会导致server_name出现优先级访问冲突。

准备nginx对应的配置文件

准备站点目录

检查语法, 并重新加载Nginx

测试访问效果

多ServerName优先级总结, 在开始处理一个HTTP请求时,Nginx会读取请求头中的host,与每个server中的 server_name 进行匹配,来决定用哪一个 server 标签完成处理这个请求。但有可能一个Host与多个server中的server_name都匹配,这个时候就会更具匹配优先级来选择实际处理的server块。优先级匹配结果如下:

首先选择所有的字符串完全匹配的server_name。(完全匹配)

选择通配符在前面的server_name,如\*.http://bgx.com

选择通配符在后面的server_name,如bgx.\*

最后选择使用正则表达式匹配的server_name5.如果全部都没有匹配到,那么将选择在listen配置项后加入[default_server]的server块6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件PS注意:当出现多个相同的Server_Name情况下,配置文件排序优先使用则会先被调用,所以生产建议配置相同端口, 不同域名,这样则不会出现访问冲突。

Nginx Try_files路径匹配如何使用?

nginx的try_file路径匹配,按顺序检查文件是否存在


演示环境准备

配置Nginx的tryfiles

测试`tryfiles`

使用lvs+keepalived可以直接负载到后端的tomcat,nginx也可以负载到后端的tomcat,lvs是4层负载比nginx七层负载效率要高,为什么网上有很多资料要使用lvs+keepalived来负载nginx呢?直接使用lvs+keepalived负载到后端的tomcat不就可以了吗?

首先nginx是一个静态服务器,通常用来处理静态资源,比如你网页中的html,图片,css等,这些都属于静态资源,但nginx也可以作为反向代理,将你的动态资源请求给你分发到后端的应用服务器(此处就是分发到你的tomcat),由于nginx的高性能,尤其是处理静态资源的高效性!其实两种方案都可以,一种是nginx+tomcat,这种通常用于中小型站点,第二种是lvs+nginx+tomcat,这种适用于大型站点,因为lvs的并发能力远远大于nginx,所以用在最前端,接收用户请求,后面的nginx可以用于会话保持两者是不同的应用场景,对于有session保持的场景,LVS是做不到的,因此LVS也替代不了Nginx……但如果你的应用不需要更复杂的7层控制,那LVS的性能会远远大于nginx!


小编推荐自己的Linux、C/C++技术交流群:【960994558】整理了一些个人觉得比较好的学习书籍、视频资料共享在里面(包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等.),有需要的可以自行添加哦!~

以上有不足的地方欢迎指出讨论,觉得不错的朋友希望能得到您的转发支持,同时可以持续关注我,每天分享Linux C/C++后台开发干货内容!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容

  • 一.什么是代理? 代为办理 --> 代理 二.Nginx正向代理、反向代理? 正向代理: --> 上网 |...
    矮寨坡的M3阅读 270评论 0 0
  • 0.网站页面访问:a.网站页面访问流程:01.客户端 浏览器输入网址信息点击回车02.客户端 完成域名的解析过...
    噬魂老妖阅读 282评论 0 1
  • 来自公众号:Java情报局作者:π大新 1. Nginx简介 1.1 Nginx 概述 NGINX是一个免费、开源...
    夜空_2cd3阅读 1,086评论 1 12
  • nginx 相关 nginx 相关1. nginx 安装1.1. 下载以及上传1.2. 安装依赖环境1.3. 同步...
    wanggs阅读 420评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,523评论 16 22