Home > 应用服务
  • 【分享】Logrotate + syslogd 日志轮换管理工具总结

    Logrotate的介绍 logrotate是在规定时间到了之后才来进行日志文件的轮替,所以logrotate程序是挂在cron下面进行的,/etc/cron.daily/logrotate记录了每天要进行的日志文件轮替行为。 logrotate的配置文件: /etc/logrotate.conf /etc/logrotate.d/ logrotate.conf 是主要的参数文件,logrotate.d 是一个目录,该目录里面的所有数据都会被主动读入/etc/logrotate.conf 当中来进行。 另外,在/etc/logrotate.d/ 里面的文件中,如果没有指定一些详细的设置,则以 /etc/logrotate.conf 的规定来指定为默认值。 显而...
    阅读全文 →
  • 【分享】keepalived 配置文件(V1.2.24) 中文版详解

    【写在前面】 网上看到的一篇非常不错的介绍keepalived配置文件参数的文章,转载记录研究用 原文链接:https://blog.csdn.net/fruler/article/details/53334082   【文章正文】 创建本文的目的 笔者最近在详细研究keepalived软件,发现网上关于这方面的详细描述较少,需要案例配置参数在新版本中已经失效。keepalived官方网站提供的文档资料,虽然以案例为基础,提供了较为常用的参数配置,但是笔者发现许多参数并未提及。作为IT行业的人,似懂非懂只能做一个三流的技术人员,本着刨根问题的精神,创建了该篇文章...
    阅读全文 →
  • 【分享】增强 Nginx 的 SSL 安全性

    本文向你介绍如何在 nginx 服务器上设置健壮的 SSL 安全机制。我们通过禁用 SSL 压缩来降低 CRIME 攻击威胁;禁用协议上存在安全缺陷的 SSLv3 及更低版本,并设置更健壮的加密套件(cipher suite)来尽可能启用前向安全性(Forward Secrecy);此外,我们还启用了 HSTS 和 HPKP。这样我们就拥有了一个健壮而可经受考验的 SSL 配置,并可以在 Qually Labs 的 SSL 测试中得到 A 级评分。 如果不求甚解的话,可以从 https://cipherli.st 上找到 nginx 、Apache 和 Lighttpd 的安全设置,复制粘帖即可。 本教程在 Digi...
    阅读全文 →
  • 【分享】LVS在大规模网络环境中的应用

    9月13日,阿里云课堂第一期在北京准时开课,到场与会人员众多,现场气氛非常热烈。阿里云三位讲师为大家献上了精彩的演讲,参会者也纷纷积极参与现场互动,通过问答交流,收获颇丰。应广大用户要求,我们将云课堂讲师现场分享内容全文整理出来,供大家参考。阿里云课堂会继续在全国各地陆续开课,欢迎大家继续支持! 1、 SLB总体架构 LVS本身是开源的,我们对它进行了多方面的改进,并且也已开源-https://github.com/alibaba/LVS 接下来我们看一下LVS在整个SLB中的位置在哪里,整个图是SLB的架构图。SLB功能比较...
    阅读全文 →
  • 【分享】Nginx防御DDOS攻击的方法总结

    前言 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用。 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好。 防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈。DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。 对于七层的应用攻击,我们还 是可以做一些配置来防御的,例如前端是...
    阅读全文 →
  • 【分享】解决服务器配置tcp_tw_recycle和tcp_timestamps导致connect失败问题

    近来线上陆续出现了一些connect失败的问题,经过分析试验,最终确认和proc参tcp_tw_recycle/tcp_timestamps相关; 1. 现象:  第一个现象:模块A通过NAT网关访问服务S成功,而模块B通过NAT网关访问服务S经常性出现connect失败,抓包发现:服务S端已经收到了syn包,但没有回复synack;另外,模块A关闭了tcp timestamp,而模块B开启了tcp timestamp; 第二个现象:不同主机上的模块C(开启timestamp),通过NAT网关(1个出口ip)访问同一服务S,主机C1 connect成功,而主机C2 connect失败; 2. 分析 根据现象上述问...
    阅读全文 →
  • 【工作】 解决设置Accept-Encoding为gzip,deflate后返回数据异常乱码问题

    【背景描述】 交付反馈一个客户请求我们的一个业务查询接口,在我们的后台日志观察客户的数据请求都是正常返回的,但是用户反馈,约有50%请求无法正常接收到结果。且对方提供了数据请求时候返回的报文header,如下: 结果返回正常时候的header头信息: 结果返回异常时候的header头信息: 【解决过程】 从两张图片来看,数据返回正常时候并没有“Content-Encoding: gzip“,即当传输的数据采用gzip时候,会造成请求结果异常。 我们前端采用的nginx作为代理转发服务器,检查gzip相关配置参数如下: 可以看到,对于...
    阅读全文 →
  • 【分享】Nginx参数研究:tcp_nopush、tcp_nodelay、sendfile、https、keepalive

    一、nginx之tcp_nopush、tcp_nodelay、sendfile 1、TCP_NODELAY 你怎么可以强制 socket 在它的缓冲区里发送数据? 一个解决方案是 TCP 堆栈的 TCP_NODELAY选项。这样就可以使缓冲区中的数据立即发送出去。 Nginx的 TCP_NODELAY 选项使得在打开一个新的 socket 时增加了TCP_NODELAY选项。但这时会造成一种情况: 终端应用程序每产生一次操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据以及40个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞。为了避免这种情况,TCP堆栈实现了等待数...
    阅读全文 →
  • 【工作】Nginx 实现域名的登录验证功能

    摘星怪  /
     / 工作记录, 应用服务
    【背景说明】 研发有个需求,访问公司某个域名下的某个url时候需要认证,只有输入正确的用户密码才允许访问web内容。 【实现思路】 Nginx服务中的"ngx_http_auth_basic_module"模块可以实现此要求,默认情况下编译安装完nginx后,就已经安装启用了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 --without-http_auth_basic_module关闭。 ngx_http_auth_basic_module模块指令: 语法: auth_basic string | off; 默认值: auth_basic off; 作用:默认表示不开启认证,后面如果跟上字符,这些字符会...
    阅读全文 →
  • 【分享】JVM内存、GC原理、内存溢出总结

    一、JVM内存介绍: Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。   堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;   非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内...
    阅读全文 →
  • 【分享】Linux下的Squid的配置详解

    一. 代理服务简介 1. 什么是Squid代理服务器(Proxy Server) Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。   目前,Squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协议.   1.1 常用反向代理及缓存软件对比: ...
    阅读全文 →
  • 【分享】LVS实现负载均衡原理及安装配置详解

    【写在前面】 网上转载的一篇介绍LVS的文章,内容包含实现原理和具体实例,图文并茂,非常详尽,值得推荐学习! 【文章正文】 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到...
    阅读全文 →
  • 【分享】NFS原理和搭建详解

    从头开始  /
     / 应用服务
    一、NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。 NFS一般用来存储共享视频,图片等静态数据。 《什么是NFS》 就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据。(一般共享视频...
    阅读全文 →
  • 【分享】NGINX访问https跳转到http的解决方法

    问题: 浏览器打开https://www.ttlsa.com/aaa.html,然后跳转到http://www.ttlsa.com/aaa.html 网站架构:用户--https--->nginx代理---http---->tomcat/nginx+php nginx转发给后端的请求是http协议,后端程序跳转获取到的协议是http,返回一个redirect(http header中带Location:http://www.ttlsa.com/aaa.html),浏览器收到location,跳转到了location指定的地方。 解决方法 解决方法1: 在nginx代理中增加一个header,标志用户请求是http还是https,后端获取header决定跳转到http/https页面。这个方法需...
    阅读全文 →
  • 【工作】Linux使用非root用户启动Apache、Nginx等服务的方法

    【写在前面】 对于Linux系统而言,普通用户只能使用1024以上的端口启动服务,而1024以内的端口只能由root用户使用,而通常像apache或者Nginx等服务,使用最多的是80和443端口,如果通过其他非root用户启动,就会报错如下: (13)Permission denied: make_sock: could not bind to address [::]:80 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down 一般情况下,线上的web服务都会使用root用户来启动,但是有时候为了安全或者是某些特殊...
    阅读全文 →
  • 【理论】Nginx的内置变量和作用

    从网上找到的关于Nginx 内置变量的相关解释,工作中会经常用到,在此记录下。 Nginx的内置变量: $args, 请求中的参数; $is_args, 如果已经设置$args,则该变量的值为“?”,否则为“”。 $content_length, HTTP请求信息头里的"Content-Length"; $content_type, 请求信息头里的"Content-Type"; $document_root, 针对当前请求所属的root指令设置的根目录路径; $document_uri, 与$uri相同; $host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名; $limit_rate, 对连接速率的限制; $request_method, ...
    阅读全文 →
  • 【理论】Nginx “upstream”模块详解和各负载均衡模式对比测试

    摘星怪  /
     / 应用服务
    负载均衡配置格式: 通常多个应用实例来做负载均衡是优化资源利用、最大化吞吐量、减少延迟、确保容错配置。Nginx可以通过不同的部署方案作为非常有效的HTTP负载均衡器,代理流量到后端服务器组。 首先,你得通过upstream设定后端服务器,这个指令放在http块里,分组里的服务器通过指令server配置,服务器可以写成IP地址与端口、域名、UNIX套接字(socket)等方式,其中如果域名可以被解析为多个地址,则这些地址都作为backend,下面是一个例子: upstream backend { server www.ceshi.com; server 145.223...
    阅读全文 →
  • 【工作】指定Tomcat的初始化内存和JDK版本

    写在前面: 有时候有些Tomcat程序运行时需要指定的JDK版本和初始化内存大小,而有些系统自带的JDK版本太低,无法满足需求,所以我们需要更改Tomcat的配置文件,指定这些参数。 配置方法: 配置方法很简单,就是在Tomcat的启动脚本中修改和添加相关参数即可,下面是Linux上修改的方法。 # vim /opt/apache-tomcat-7.0.28/bin/catalina.sh 添加如下内容: #指定tomcat使用的jdk版本(先安装好) export JAVA_HOME=/opt/jdk1.7.0_76 #指定初始化内存大小为1G,最大为2G export JAVA_OPTS="-server -Xms1G -Xmx2G -X...
    阅读全文 →
  • 【工作】解决Nginx访问日志中报favicon.ico文件404错误

    摘星怪  /
     / 工作记录, 应用服务
    报错现象: 经常会在Nginx虚拟主机的访问日志里有"GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)"这样的报错,但是又不影响访问,决定解决这个报错问题。 favicon.ico的作用: 一般用于作为缩略的网站标志,它显示在浏览器的地址栏、浏览器标签上或者在收藏夹上(如下图),是展示网站个性的缩略logo标志,也可以说是网站头像,目前主要的浏览器都支持favicon.ico,一般访问网站时候会自动搜寻网站下的/favicon.ico 文件(如果在网页上没有特别指明...
    阅读全文 →
  • 【理论】HTTP状态码大全

    1xx – 信息提示 从100到199范围的HTTP状态码是信息报告码。基于各种原因考虑,大多数情况下我们 是很少看见这些代码的。首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在屏幕上。它们只是浏览器使引用的内部码。另 外,这些代码不常见的另外一个原因是起初HTTP标准不允许使用这一范围的状态码。就其本身而言,它们也一直没有被广泛地使用。 状态代码 状态信息 含义 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新) 101 Switching Pro...
    阅读全文 →