引入Nginx线程池功能使性能提升9倍!

Posted Posted in Web, 笔记, 菜鸟, 运维

前言
Nginx以异步、事件驱动的方式处理连接。传统的方式是每个请求新起一个进程或线程,Nginx没这样做,它通过非阻塞sockets、epoll、kqueue等高效手段,实现一个worker进程处理多个连接和请求。

一般情况下下是一个CPU内核对应一个worker进程,所以worker进程数量固定,并且不多,所以在任务切换上消耗的内存和CPU减少了。这种方式很不错,在高并发和扩展能力等方面都能体现。

看图说话,任务切换不见了。

但是异步事件模式很不喜欢阻塞(blocking)。很多第三方模块使用了阻塞模式的调用,有时候,用户乃至模块作者都不知道到阻塞调用会大大降低 ….[阅读全文]

使用Nginx配置规则简单防止SQL注入/XSS攻击

Posted Posted in Web, 经验, 菜鸟, 运维

最近发现网站访问特别缓慢,甚至出现504错误,通过top -i命令查看服务器负载发现负载数值飙升到4.9之多了,并且持续时间越来越频繁直至持续升高的趋势,还以为是被攻击了,对来访IP进行了阈值限制后效果并不是很明显,CDN服务里限制几个主要IP效果依然不是很明显,估计这应该是被恶意扫描攻击了。

通过服务器waf的日志记录分析得出基本都是SQL注入、XSS攻击范畴,这些攻击都绕过了CDN缓存规则直接回源请求,这就造成PHP、MySQL运算请求越来越多,服务器负载飙升就是这个原因造成的,在日志里可以看到几乎大部分都是 GET/POST 形式的请求,虽然waf都完美的识别和拦截了,但是 ….[阅读全文]

Nginx使用X-Frame-Options避免xss攻击/劫持攻击/js脚本攻击的简易方法

Posted Posted in Web, 入门, 菜鸟, 运维

将以下Nginx配置代码写入http-server段落下:
http {
server {
add_header X-Frame-Options “SAMEORIGIN”;
add_header X-XSS-Protection “1; mode=block”;
add_header X-Content-Type-Options “nosniff”;


修改nginx服务器配置,添加X-frame-options响应头。赋值有如下三种: ….[阅读全文]

如何使用Nginx+htpasswd实现web加密访问

Posted Posted in Web, 入门, 菜鸟, 运维

有的时候我们可能会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问。那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客。
htpasswd安装
htpasswd工具是httpd组件的一部分,在Linux中需要先安装 httpd-tools包 才可实现加密文件的生成:

CentOS为例yum安装:yum  install  httpd-tools

Ubuntu为例apt安装:apt  install  httpd-tools

然后就通过htpasswd生成密码文件:

ht ....[阅读全文]

超好用的Nginx日志分析工具GoAccess使用详解

Posted Posted in 监控, 笔记, 菜鸟, 运维

如果把运维看做是医生给病人看病,则日志就是病人对自己的陈述,很多时候医生需要通过对病人的描述中得出病人状况,是否严重,需要什么计量的药,什么类型的药。所以古人有句话叫对症下药,这个症就是病人的描述加医生的判断,在重一点的病在加上很多的化验。在医生看病时病人的描述和化验单上的数据对医生是非常重要的。同理日志在运维中的作用也是类似的,但非常不幸,日志在很多运维中被严重低估,直到磁盘空间不足的时候才想到,这有个大的日志文件把他删了,这样可以节省空间。

….[阅读全文]

php-fpm参数调优方案(原文PHP-FPM on highload tips)

Posted Posted in Web, 经验, 菜鸟, 运维

php-fpm进程设置多少合适,设成动态还是静态?VPS/云主机只有1GB内存,网站运行经常卡机怎么办?

下面是摘自Google讨论话题的翻译内容:《 PHP-FPM on highload tips

When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you

如果你的高负载网站使用PHP-FPM管理FastCGI,也许下面这些技巧对你有用

1. Compile PHP’s modules as less as possible, the simple the best (fast);

尽量少安装PHP模块,最简单是最好(快)的

2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);

把你的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以(建议压力测试来得出自己服务器合理的值) ….[阅读全文]

你了解Kubernetes(k8s)吗?一文让你理解k8s核心概念

Posted Posted in Kubernetes, 云计算, 笔记, 菜鸟

一、云原生是什么

CNCF给出的定义是:

容器化微服务容器可以动态调度我认为云原生实际上是一种理念或者说是方法论,它包括如下四个方面:

容器化:作为应用包装的载体持续交付:利用容器的轻便的特性,构建持续集成和持续发布的流水线DevOps:开发与运维之间的协同,上升到一种文化的层次,能够让应用快速的部署和发布微服务:这是应用开发的一种理念,将单体应用拆分为微服务才能更好的实现云原生,才能独立的部署、扩展和更新一句话解释什么是云原生应用:云原生应用就是为了在云上运行而开发的应用

….[阅读全文]

Docker中文文档(十):DockerCompose项目实战

Posted Posted in Docker, 云计算, 笔记, 菜鸟

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

本章将介绍 Compose 项目情况以及安装和使用。

1、简介

Compose 项目目前在 Github 上进行维护。

Compose 定位是“defining and running complex applications with Docker”,前身是 Fig,兼容 Fig 的模板文件。

Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。

….[阅读全文]

Docker中文文档(九):C/S架构以及底层实现原理

Posted Posted in Docker, 云计算, 笔记, 菜鸟

Docker使用客户端-服务器(client-server)架构模式。Docker客户端会与Docker守护进程进行通信。Docker守护进程会处理复杂繁重的任务,例如建立、运行、发布你的Docker容器。Docker客户端和守护进程可以运行在同一个系统上,当然你也可以使用Docker客户端去连接一个远程的Docker守护进程。Docker客户端和守护进程之间通过socket或者RESTful API进行通信。

 

….[阅读全文]

Docker中文文档(八):Dockerfile的详细解析

Posted Posted in Docker, 云计算, 笔记, 菜鸟

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员:可以为开发团队提供一个完全一致的开发环境;对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;对于运维人员:在部署时,可以实现应用的无缝移植。

1、基本结构

Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。

一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

….[阅读全文]