
Nginx
文章平均质量分 88
中间件
富士康质检员张全蛋
人生实难,唯有自渡。只有接受了真实现的现状和真实的自己,调整好心态,才能脚踏实地的活着,然后去发现角落处的那些惊喜和美好,去相信一切苦难困境都会过去!“即使身处阴沟,也要记得仰望星空”。
展开
-
nginx 405错误是什么意思
当Web服务器收到一个它不支持的HTTP请求方法时,就会返回405错误。405错误通常是由于客户端发出了不兼容或不支持的HTTP请求方法。例如,客户端可能请求一个只能通过GET方法访问的资源,但使用了POST方法。要解决405错误,需要确保客户端发送正确的HTTP请求方法。可以查看服务器文档或使用HTTP请求测试工具来确定正确的请求方法。原创 2024-08-07 11:27:34 · 3804 阅读 · 0 评论 -
Nginx 优化Nginx配置来提高你的网站性能
Help the World by Healing Your NGINX Configurationinhis famous speechat the University of Texas in2014, Admiral William H. McRaven said that if you want to change the world, start off by making your bed. Sometimes small things can have a big impa...原创 2020-07-04 08:22:30 · 1024 阅读 · 0 评论 -
Tomcat Nginx动静分离与负载均衡Tomcat
Nginx反向代理Tomcat环境准备,tomcat是已经部署好jforum网站了一台nginx+一台tomcat[root@localhost vhosts]# ps -ef | grep tomcatroot 10865 1 1 15:37 pts/1 00:00:37 /usr/java/jdk1.8.0_131/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logg...原创 2020-07-03 15:34:20 · 390 阅读 · 1 评论 -
TCMalloc 优化 Nginx 的性能
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是google-perftools工具中的一个(gperftools四个工具分别是:TCMalloc、heap-checker、heap-profiler和cpu-profiler),这个工具是开源的,以源码形式发布。如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc静态库连接到你的程序中。使用的时候和g原创 2020-06-25 16:48:04 · 768 阅读 · 0 评论 -
Nginx gzip_static模块 避免零拷贝失效
gzip_static on|offnginx对于静态文件的处理模块:该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。该模块启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容。为了要兼容不支持gzip的浏览器,启用gzip_static模块就必须同时保留原始静态文件和gz文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用nginx的反向代理功能实现只保留gz文件。使用sen...原创 2020-06-24 10:13:14 · 1866 阅读 · 0 评论 -
别再问我 QPS、TPS、并发用户数、吞吐量关系 好吗?
在使用Oracle的技术支持服务的时候,经常会遇到补丁相关的术语。现在对这些术语做些解释说明:Interim patch/One-off patch:是我们常说的小补丁,为了修复某(几)个Bug而发布的补丁。这种补丁推荐在测试库上测试无误后再安装在生产库上。Merged patch:合并的补丁。当几个小补丁之间有冲突,不能同时安装的时候,需要提供这种Merged Patch。补丁原创 2018-05-04 11:12:02 · 761 阅读 · 0 评论 -
操作系统中进程和线程的关系
oracle用户管理(1)创建用户:概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。如果不是以管理员身份登入而是以普通用户登入就不可以创建用户,因为权限不够。--使用管理员的身份修创建用户create us原创 2017-08-08 16:34:04 · 611 阅读 · 0 评论 -
Nginx 阻塞与非阻塞,同步与异步
同步与异步同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知.原创 2020-05-18 11:04:41 · 1622 阅读 · 0 评论 -
Nginx 对进程的管理 信号 平滑升级新的配置文件
Nginx进程信号举个例子说明Nginx是父子进程的通信是通过信号进行管理的,使用ps -ef可以看到当前进程的ID和其父进程的ID。[root@www ~]# ps -ef | grep nginxroot 1961 1 0 11:14 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnobody 1965 1961 0 11:14 ? 0...原创 2020-07-02 11:46:08 · 424 阅读 · 0 评论 -
Nginx请求流程和进程结构
今天碰到这个问题 问同事 被jj了 感觉自己技术太Low了 最后厚脸皮问了搞定了。在查看oracle监听状态的时候,会出现下面信息[oracle@oracle11g ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 04-DEC-2017 19:09:43Copyright转载 2017-12-04 11:48:48 · 616 阅读 · 0 评论 -
Nginx accept_mute 惊群问题
惊群的定义首先,来看惊群的定义:Thethundering herd problemoccurs when a large number of processes waiting for an event are awoken when that event occurs, but only one process is able to proceed at a time. After the processes wake up, they all demand the resour...原创 2020-07-02 10:52:25 · 2685 阅读 · 0 评论 -
Nginx yum安装和源码安装
常见web服务器:nginx、tengine、httpd、tomcat、IIS、lighttpdhttpd|IIS 政府类,银行用的居多nginx|tomcat|tengine 社区,电商用的多nginx 新浪httpd 中国人民政府网站、兴业银行...IIS 招商银行、工商银行、农业银行...tengine(2012) 简书、csdn、淘宝...nginx ...原创 2020-03-05 22:12:11 · 1326 阅读 · 0 评论 -
Nginx源码安装和yum安装对比
观点一根做运维的朋友聊天,谈到了,yum安装和源码安装哪个好的问题。真没想到,关于这个问题,分歧还挺大的。有的人认为,不用源码安装就不是好的运维,不是好的系统管理员。这帽子扣的有点大了。在此我想说一说我的看法,经常看我博客的,也许知道,前期我写关于服务器的文章,基本上都是源码安装的,后来基本上是用yum安装的,除非yum源里面没有,我才会源码安装。在我看来,yum安装和源码安装,基本上没区别,...转载 2020-03-10 16:54:16 · 1263 阅读 · 3 评论 -
Nginx 版本隐藏
对nginx的一个版本进行隐藏,这样你不知道登入的网站到底用的是什么服务器JFWS/3.0 虚构web服务 虚构版本号/usr/src/nginx-1.16.1/src--来到src下面,有大量的源码文件[root@localhost src]# lscore event http mail misc os stream[root@localhost cor...原创 2020-03-09 22:15:36 · 297 阅读 · 0 评论 -
Nginx 配置文件结构解析
1. nginx配置文件路径不同安装方式,nginx的文件存放路径也有所不同。1 源码安装配置文件路径:在安装目录下的conf目录下,比如我的安装目录是/usr/local/nginx,那么他的配置文件就在/usr/local/nginx/conf目录下。2 yum安装配置文件路径:在/etc/nginx/目录(主配置文件)与/etc/nginx/conf.d目录下。...原创 2020-03-10 22:05:20 · 1198 阅读 · 1 评论 -
Nginx 多进程模型
ORACLE如何访问数据1.全表扫描(FullTableScansFTS)为实现全表扫描,Oracle读取表中所有行,并检查每一行是否满足语句的WHERE限制条件一个多块读操作可以使一次I/O能读取多块数据块(db_block_multiblock_read_count参数设定),而不是只读取一个数据块, 这极大的减少了I/O总次数,提高了系统的吞吐量,所以利用多块原创 2018-02-25 16:33:09 · 583 阅读 · 0 评论 -
Nginx 编译添加模块详解
热部署就是常说的在线手升级,不影响线上的服务升级,nginx热部署前提是你已经安装好了nginx,已经在运行了。有的是nginx需要添加新的模块,有的是nginx版本需要升级。添加新的模块,或者升级版本,要参考以前编译的模块,如果不添加,那么以前的模块就不能使用了。添加模块(添加echo模块)(1)使用-V查看编译参数[root@www src]# /usr/local/ng...原创 2020-03-09 21:57:07 · 1587 阅读 · 0 评论 -
如何在高并发环境中灰度升级Nginx?
2019年Nginx发布了6个stable版本以及12个mainline版本,这些发布要么修改了重要的漏洞,要么新增了很有用的特性。如果你不能及时升级Nginx,那么既无法享受到技术进步带来的降本增效,还会让服务暴露在安全风险之下。十多年前,我们大可以升级前在官网上发个公告,声明某个凌晨不提供服务,那时可以从容地停止进程、更换程序、重启服务。然而,当下的用户却很难容忍停机升级这种体验,尤其对于接入层充当负载均衡的Nginx来说,它的并发连接数以百万计,哪怕只终止Nginx进...转载 2020-06-13 10:35:45 · 385 阅读 · 0 评论 -
Nginx 在线升级
在线不停机升级Nginx图解Nginx升级1.6----->1.7(1)查看一下我的老版本的nginx的版本信息和模块信息,因为升级要把老版本的模块信息也需要编译进去[root@www nginx-1.17.9]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.16.1built by gcc 4...原创 2020-04-23 21:03:47 · 1735 阅读 · 0 评论 -
Nginx 网络事件模型
Oracle进程结构Oracle的进程分为用户进程、服务器进程和后台进程。用户进程是在客户机内存上运行的程序,在用户请求连接Oracle数据库时建立。用户进程不能直接同Oracle服务器交互,而是把操作请求提交给服务进程。服务进程是在用户同Oracle数据库建立会话之后自动在服务器端创建的进程。服务进程直接同Oracle服务器交互,执行用原创 2017-12-06 09:19:02 · 3116 阅读 · 0 评论 -
Nginx keepalived 长连接
HTTP保持连接是一项必要的性能特点,可减少延迟并允许网页加载更快。HTTP是一个简单的基于文本的协议。如果您以前从未这样做过,请查看HTTP调试工具(例如Web浏览器中的工具)的输出,并检查标准的请求和响应结构:在最简单的实现中,HTTP客户端与目标服务器建立一个新TCP连接,写入请求并接收响应。然后服务器关闭TCP连接释放资源。这种操作模式可能效率很低,特别是对于具有大量信息的复杂网页或网络链接速度较慢的情况。创建新的TCP连接需要进行“三向握手”,而将其断开也需要进行双向关闭过程。原创 2020-07-10 11:09:17 · 710 阅读 · 1 评论 -
Nginx事件驱动模型与事件循环
Nginx的事件驱动模型当 Nginx 刚刚启动时,在等待事件部分,也就是打开了 80 或 443 端口,这个时候在等待新的事件进来,比如新的客户端连上了 Nginx 向我们发起了连接,此步往往对应 epoll 的 epoll wait 方法,这个时候的 Nginx 其实是处于 sleep 这样一个进程状态的。当操作系统收到了一个建立 TCP 连接的握手报文时并且处理完握手流程以后,操作系统就会通知 epoll wait 这个阻塞方法,告诉它可以往下走了,同时唤醒 Nginx worker...原创 2020-07-09 10:12:49 · 767 阅读 · 0 评论 -
聊聊Nginx参数的优化
故障现象某省税务核心业务系统在7月13日11-12点出现业务处理非常缓慢,偶尔出现卡住不动。某业务功能处理时间是平时的10倍以上。已知情况:1、近两周开始,在白天业务高峰期业务系统会出现处理缓慢2、数据库层面出现大量latch:cache buffers chains等待会话3、每次问题大概持续了30分钟后,latch:cache buffers chains等待消失...原创 2018-11-01 15:51:54 · 589 阅读 · 0 评论 -
Nginx I/O优化之直接I/O directio
直接IO绕开磁盘高速缓存顾名思义直接落盘 直接io,绕开磁盘高速缓存 正常情况下没有开启直接I/O,用户进程调用read方法,先从磁盘读取出到内核的缓冲区即磁盘高速缓存,然后读到用户存储空间缓冲区,这里其实是读了2次哦(先到磁盘高速缓存再到用户缓冲区),写和读一样也是两次。直接I/O让我们绕开了内核缓冲区,即磁盘高速缓存,当我们读的时候直接从磁盘读进来,写的时候从用户缓冲区直接写入磁盘。总结:我们可以让读写操作绕过内核缓冲区,直接读写用户缓冲去,提高速度,避免磁盘缓存页的拷贝 传统走缓冲区原创 2020-06-17 12:04:03 · 1961 阅读 · 0 评论 -
Nginx I/O优化之异步IO与线程池
异步I/O传统:在用户空间发起了read调用,用户空间这个进程就会被阻塞,阻塞之后就开始去读磁盘,将磁盘内容读到磁盘高速缓冲区,然后再读到用户缓冲区。整个这个流程结束再唤醒该用户进程,该用户进程再去做其他操作了。异步I/O:在调取read的时候,用户进程可以处理其他任务,不会阻塞。#在开启异步I/O的时候可以设定线程池Syntax: aio on | off | threads[=pool];Default: aio off;Context: http, server, location原创 2020-06-22 09:58:48 · 1259 阅读 · 1 评论 -
【译】提高nginx9倍性能的线程池 thread_pool
在nginx的官网看到一篇介绍nginx原理的文章,这篇文章比较老了是15年发布的,国内有人翻译过但是有些小瑕疵,这里更正出来发布在我个人的文章里供大家参考,这篇文章详细的介绍了nginx线程池的原理以及设计思路,在最后通过详细的实验数据来告诉我们通过线程池提升的性能以及分析了应该使用线程池的场景。在日后的其他领域依然很有借鉴意义。点我看源文(Thread Pools in NGINX Boost Performance 9x!)大家都知道NGINX使用异步以及事件驱动的方式来处理请求,这意味.转载 2020-06-19 11:17:38 · 1177 阅读 · 0 评论 -
Nginx I/O优化之 sendfile 零拷贝
指令说明语法: sendfile on | off;默认值: sendfile off;上下文: http,server,location,if in location指定是否使用sendfile系统调用来传输文件。sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。原理解释read/write在传统的文件传输方式(read、write/send方式),具体流程细.原创 2020-06-23 11:03:28 · 2195 阅读 · 0 评论 -
Nginx 内存与共享内存的管理与分配
一. 概述应用程序的内存可以简单分为堆内存,栈内存。对于栈内存而言,在函数编译时,编译器会插入移动栈当前指针位置的代码,实现栈空间的自管理。而对于堆内存,通常需要程序员进行管理。我们通常说的内存管理亦是只堆空间内存管理。 对于内存,我们的使用可以简化为3步,申请内存、使用内存、释放内存。申请内存,使用内存通常需要程序员显示操作,释放内存却并不一定需要程序员显示操作,目前很多的高级语言提供了垃圾回收机制,可以自行选择时机释放内存,例如: Go、Java已经实现垃圾回收, C语言目前尚未实现垃圾回收,C+原创 2020-07-22 10:41:57 · 1332 阅读 · 0 评论 -
Nginx与Apache请求切换对比
进程的概念父子进程有两种特殊的情况,如果父亲进程终止,子进程来说是正常终止的,但是如果父亲进程终止了子进程没有终止,子进程会变为孤儿进程,他的父亲进程会指向init进程。另外一种情况是子进程终止了,父亲进程不知道,这个时候子进程会变为僵尸进程。在linux里面产生子进程都是通过fork来创建的。前台进程简单来说就是可以在命令行上面输入一条命令[root@or原创 2018-01-18 09:42:48 · 553 阅读 · 0 评论 -
Nginx 413 Request Entity Too Large错误解决
在进行RAC优化之前,你应该...应用层面的优化(主要是业务的sql语句)单实例的优化操作系统的优化 首先是SQL语句的性能,之后是RAC下面每一个单实例的优化,最后是操作系统优化。上面几个都没有问题就有可能是RAC机制本身导致的性能问题。RAC的性能--第一个问题RAC究竟能否提高性能?看你怎么使用它!RAC的性能--第二个问题RAC的节点数和性能是什么关系?看你怎么使用它! 结论看...原创 2018-06-05 21:36:33 · 7017 阅读 · 1 评论 -
Nginx server_name 域名 虚拟主机配置
Nginx虚拟主机虚拟主机提供了在同一台服务器上运行多个网站的功能,启动的是一个nginx实例,部署多个虚拟主机来发布多个门户网站。虚拟主机标识是server,一个server对应一个虚拟主机。虚拟主机的三种模式(1)基于多域名方式配置虚拟主机(2)基于多端口配置虚拟主机(3)基于多ip配置虚拟主机基于多域名方式配置虚拟主机基于多域名的虚拟主机是最常见...原创 2020-03-17 22:31:29 · 4724 阅读 · 2 评论 -
Nginx listen 监听端口详解
如果只有一块网卡,那么只有一个IP,如果是虚拟样还有虚拟网卡的IP,这样实际上就会涉及到多个IP,*代表所有的IP。和*.8000一样,表示将服务器所有支持的ip地址都绑定了端口,这样所有的IP地址都可以提供服务。(一般不会写在listen的后面,一般ssl在其他的地方配置,配置了ssl那么该端口只提供ssl的服务,说白了就是https)(能够承载多少tcp的连接,设置的越大,承载的tcp连接越多,反之)对于IP协议来讲,可以只配置端口,可以只配置IP,也可以IP和端口都配置。原创 2023-09-14 14:09:25 · 7430 阅读 · 0 评论 -
Nginx location 正则匹配规则
Location 知识Location是快速定位资源的,平时默认都是在根目录下面,我们可以通过配置Location指令块,来决定客户端发过来的请求URI如何处理。(location是根据Uri来进行不同的定位,location可以把网站的不同部分,定位到不同的处理方式上)语法location [=|~|~*|^~] patt { } //中括号中为修饰符,可以不写任何参数,此时...原创 2020-03-12 11:12:21 · 2559 阅读 · 3 评论 -
Nginx expire指令决定浏览器过期缓存是否失效
在linux系统操作的过程里面,不是所有对服务进程的操作都是要实时进行的。[root@primary ~]# vi /at.txtcat /etc/hosts >/cat.log[root@primary ~]# at -f /at.txt now + 1 minutes一分钟后查看[root@primary ~]# cat /cat.log127.原创 2018-01-19 13:52:04 · 1694 阅读 · 0 评论 -
HTTP请求是如何关联Nginx server{}块的?
Nginx是企业内网的对外入口,它常常同时对接许多应用,因此,Nginx上会同时监听多个端口、为多个域名提供服务。然而,匹配多级域名并不简单,Nginx为此准备了字符串精确匹配、前缀通配符、后缀通配符、正则表达式,当它们同时出现时,弄清楚HTTP请求会被哪个server{ }下的指令处理,就成了一件困难的事。这是因为基于域名规范,请求匹配server{ }配置块时,并不会按照它们在nginx.conf文件中的出现顺序作为选择依据。而且对于不支持Host头部、没有域名的HTTP/1.0请求和无法匹配到..转载 2020-07-13 10:45:20 · 531 阅读 · 0 评论 -
Nginx http_rewrite_module模块实现资源重定向
在浏览器输入www.jingdong.com可以帮你跳转到https://www.jd.com/,而且在输入一些路径的时候比如https://www.jd.com/cwwecvwev这种,正常情况会报404资源找不到,但是它帮你重定向到了首页。在手机端打开京东是手机端的页面https://m.jd.com/,在pc端打开的是https://www.jd.com/页面,在不同的终端打开的页面的地...原创 2020-03-14 11:30:41 · 1853 阅读 · 1 评论 -
Nginx Nginx是如何处理 HTTP 头部的?
Nginx 处理 HTTP 头部的过程在http模块处理请求之前,首先需要nginx的框架先对客户端建立好连接,然后接收用户发来的url,方法等,然后再去接收所有的header。根据这些header信息才能决定选择哪些配置块,才能决定让http模块如何处理请求。当客户端发来SYN的时候,内核会回复SYN+ACK表示确认了,当客户端发来ACK,内核认为这个连接已经建立成功了。Nginx有很多worker进程,多个进程都监听了80端口或者443端口。操作系统选择某个worker进程,这个...原创 2020-09-03 10:15:09 · 1045 阅读 · 0 评论 -
Nginx 处理一个 HTTP 请求的全过程
前面给大家讲了Nginx 是如何处理 HTTP请求头部的,接下来就到了真正处理 HTTP 请求的阶段了。先看下面这张图,这张图是 Nginx 处理 HTTP 请求的示意图,虽然简单,但是却很好的说明了整个过程。Read Request Headers:解析请求头。 Identify Configuration Block:识别由哪一个 location 进行处理,匹配 URL。 Apply Rate Limits:判断是否限速。例如可能这个请求并发的连接数太多超过了限制,或者 QPS 太高。 P.原创 2020-09-09 10:28:43 · 2537 阅读 · 1 评论 -
Nginx HTTP 请求头中的 X-Forwarded-For
背景通过名字就知道,X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。X-Forwarded-For 请求头格式非常简单,就这样:X-Forwarded-For: client转载 2020-07-20 10:51:32 · 13054 阅读 · 0 评论 -
Nginx 获取客户端真实IP $remote_addr与X-Forwarded-For
nginx配置首先,一个请求肯定是可以分为请求头和请求体的,而我们客户端的IP地址信息一般都是存储在请求头里的。如果你的服务器有用Nginx做负载均衡的话,你需要在你的location里面配置X-Real-IP和X-Forwarded-For请求头: location ^~ /your-service/ { proxy_set_header X-Real-IP $remote_addr; pro原创 2020-06-09 10:24:49 · 47273 阅读 · 5 评论