摘要: haproxy的配置文件大概可以分两段;第一段配置上global配置段即全局配置段,主要是针对haproxy的进程和安全相关的;第二段是proxies代理配置段,主要是配置haproxy前端监听那个地址那个端口以及后端server的名称、地址、端口,以及server相关属性等配置;而proxies配置段里又分defaults配置段,这个部分主要是定义后续的backend,listen这两个段的默认配置;什么意思呢?也就是在后面的配置中如果我们没有写对应参数,它默认会继承defaults里的配置;如果说后面的配置中和前边的defaults中的配置重复了,那么就已后面的配置生效,也就是说后面的配置段优先级高于defaults里的配置; 阅读全文
posted @ 2020-04-24 01:53 Linux-1874 阅读(1769) 评论(0) 推荐(0) 编辑
摘要: 前面聊nginx的时候我们有聊到过nginx的一个重要的功能反向代理,这里再简单回顾下,所谓代理就是“一手托两边”,什么意思呢?就是代理服务器它面向客户端一侧它扮演服务器角色,面向服务器一侧它扮演客户端角色;而反向代理就是代理服务端响应客户端的请求;我们把这种用于代理服务器响应客户端角色叫反向代理;haproxy就是一反向代理实现的软件,在基于反代的模式下,可以对后端服务器做四层或七层的负载均衡;通常情况下haproxy工作在一个流量入口的节点上,用于接收并把客户端的请求分发给不同应用的后端服务器; 阅读全文
posted @ 2020-04-21 00:11 Linux-1874 阅读(4146) 评论(0) 推荐(1) 编辑
摘要: 对于varnish来讲,对后端主机做健康状态监测的原理是请求后端主机特定的资源,如果能够在指定的超时时长内正确响应我们就认为后端主机上健康状态的,如果不能正确的响应我们就认为该后端主机上不健康的;在varnish中对后端主机做健康状态监测需要用.probe 来引入一段上下文配置,明确的说明怎么对后端做健康状态监测(或者用probe关键字+名称来引入一段公有的健康状态监测机制,后端多台主机可以用.probe +名称引用);比如请求后端主机的那个url或者用.request来指定向后端主机发送的请求的报文;对后端主机的响应多少次我们认为是健康的,监测频度,超时时长等等信息; 阅读全文
posted @ 2020-04-10 21:18 Linux-1874 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 对于varninsh来讲,缓存项修剪也叫缓存项删除;我们在varnish服务器上可以通过vcl语言来编写缓存策略,对于某些缓存该如何缓存,缓存多久等等;假如我们在定义好缓存策略后,在定义缓存过期时间内,后端服务器内容发生了变化,或者后端服务器发生了内容更新,我们如果不把varnish上的缓存修剪掉,对于用户来讲,用户的访问就不是最新的数据;为了解决这样的问题,我们需要人工手动的去修剪缓存项;而修剪缓存项一般都是针对某一类资源或特定资源来做修剪(通过用户指定或正在匹配),一般不会也不应该是全部; 阅读全文
posted @ 2020-04-09 21:43 Linux-1874 阅读(761) 评论(0) 推荐(0) 编辑
摘要: varnish的状态引擎分前端工作线程或者客户端状态引擎和后端工作线程或者服务端状态引擎;客户端状态引擎,主要处理客户端请求和响应相关的处理,比如是否可查缓存,是否命中,是否修剪缓存,是否识别用户请求的方法有或者直接交给vcl_pass,又或者说怎样响应客户端等等,可以看到客户端状态引擎vcl_pass,是一个额外处理机制,不管是否可查缓存,是否命中,都可以交给它处理;对于服务端状态引擎主要是处理和后端服务器请求和响应相关操作,比如怎样去后端服务器取资源,对服务器的响应报文是否可缓存,怎么缓存,对后端服务器的响应报文错误怎么处理等; 阅读全文
posted @ 2020-04-06 23:37 Linux-1874 阅读(849) 评论(0) 推荐(0) 编辑
摘要: VCL(varnish configuration lanuage)是“域”专有类型的配置语言,主要用于编写缓存策略的,VCL有多个状态引擎,状态之间存在相关性,但状态引擎彼此互相隔离;每个状态引擎可使用return(X)指明至那个下一级引擎;每个状态引擎对应于vcl文件中的一个配置端,即为subroutine,大概处理流程是这样的,例如vcl_hash --> return(hit) -->vcl_hit;处理过程要看return是什么,return(hit)就表示下一级处理的subroutine是vcl_hit; 阅读全文
posted @ 2020-04-03 21:18 Linux-1874 阅读(2032) 评论(0) 推荐(0) 编辑
摘要: http是web应用协议,通常我们说的一次http事务,不外乎就是客户端请求,服务端响应,通常我们是这样去理解http一次事务的过程;其实对于web服务器来说,一个客户端访问服务端的某资源时,往往客户端的请求没有到达真正提供web服务的服务器上,就被响应了,这是为什么呢?我们知道一个WEB站点在提供对外访问的页面上在一定时间内都不会发生变化,而对于这些不经常变化的资源,访问又特别大的情况,如果所有客户端的请求都到真正提供WEB服务的服务器上请求资源,可以想象,对于提供web服务的服务器所在网络是需要一个巨大带宽才能够足以支撑并发很多用户去访问;所以我们的站点不应该也不能够让所有的客户端直接访问后端真正的web服务器; 阅读全文
posted @ 2020-04-02 19:17 Linux-1874 阅读(979) 评论(0) 推荐(0) 编辑
摘要: 代理其实我们可以理解为中间的“人”,它既当客户端,又当服务端,只是我们站在不同的角度对它的称呼不一样;正向代理的角色的原理就是当客户端的报文发送到代理服务器后,代理客户端会更改客户端的源IP或源端口信息;在真正服务端上看到的请求通常是正向代理的ip和端口;而对于反向代理来说,它主要是代理服务端响应客户端的请求,它通常是修改客户端的目标IP或目标端口,在客户端响应的报文里看,通常是代理服务器的作为响应报文的源IP或源端口的响应,而在后端真正提供服务的服务端上看,请求报文通常是反向代理服务器的源IP或源端口; 阅读全文
posted @ 2020-04-01 23:41 Linux-1874 阅读(743) 评论(0) 推荐(3) 编辑
摘要: 众所周知一个进程要访问某一个文件,它能对文件有哪些权限,取决于进程是以那个用户或属组启动的,以及该文件的属主和属组以及other权限,如果启动该进程的用户和被访问的文件用户相同,那么该进程对文件的权限就是该文件中属主的权限,如果启动进程的用户和被访问的文件用户不同是,则就会看该进程启动的属组是否和文件属组相同,相同则应用文件属组的权限,不同时则应用文件other权限;如果文件有acl权限,那么也是同样的道理,如果启动进程的用户在acl权限列表中,就应用acl权限列表中的权限; 阅读全文
posted @ 2020-03-29 20:05 Linux-1874 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: 我们在构造请求报文时,随便给了一个字串给Host请求首部,也是可以正常请求到主页的,这就说明host请求首部实质上只是用来区分不同虚拟主机,它不用来解析;之所以在host首部没有被匹配成功的情况下,它响应a主机的页面,这是因为a主机的配置在最上面,默认情况下host首部没有被任何虚拟主机匹配就会以最上面的虚拟主机响应;这里还需要注意一点的是,httpd2.2在使用FQDN虚拟主机时,需要使用到listen指令和namevirtualhost ip:port 指令来指定虚拟主机监听的ip和端口信息;httpd2.4则可以不用使用namevirtualhost这个指令来指定 阅读全文
posted @ 2020-03-27 23:51 Linux-1874 阅读(793) 评论(1) 推荐(0) 编辑
摘要: 认证质询:客户端访问服务端时,如果我们对客户端访问的资源提前配置了需要认证才可访问,这时客户端访问服务端对应资源时,服务端会向客户端响应一个状态码为401,响应首部叫www-authenticate,明确的拒绝客户端访问,并告诉客户端,访问此资源需要认证提供用户名和密码;这个过程叫认证质询,意思就是告诉客户端访问的资源需要提供用户名和密码; 阅读全文
posted @ 2020-03-25 01:57 Linux-1874 阅读(878) 评论(0) 推荐(0) 编辑
摘要: httpd是一款历史悠久的web服务器软件,现如今比较流行的版本是2.2和2.4;对于httpd2.2的配置文件大概可以分为3段,第一段是全局指令配置段,对中心主机和虚拟主机都生效;第二段是中心主机相关配置;第三段是虚拟主机相关配置,作用于各虚拟主机;对于httpd2.2的配置中,中心主机的配置和虚拟主机的配置上可以共存,共存表示它可以在同一配置文件中,但是它两不能同时生效,在使用虚拟主机配置时,我们必须手动去注释中心主机的Documentroot所指定的文件系统路径;在2.4的配置中,虽然没有明确的区分中心主机和虚拟主机,默认情况下我们使用虚拟主机,对于中心主机的配置,自动就失效了,我们不需要额外的去是手动关闭中心主机的配置; 阅读全文
posted @ 2020-03-23 20:14 Linux-1874 阅读(2605) 评论(0) 推荐(0) 编辑
摘要: 1、编译安装LNMP,并安装wordpress   首先准备环境,编译安装LNMP可以是多台主机,也可以是单台主机,把nginx,mysql,php都集中安装在一个主机上;我这里以一台主机为例吧!!   一、编译安装nginx   1)准备编译环境 yum groupinstall "development tools" "server platform development" -y yum install pcre-devel openssl-devel zlib-devel geoip geoip-devel perl-devel perl-ExtUtils-Embed gd-devel libxml2-devel libxslt-devel -y 阅读全文
posted @ 2020-03-18 22:24 Linux-1874 阅读(1833) 评论(0) 推荐(0) 编辑
摘要: IPC(Inter-Process Communication,进程间通信),所谓进程间通信就是两个进程互相交换数据;进程间通信的方式有很多,比如内存共享、内存映射、BSD socket等等;其中最为常见的一种BSD socket,它允许位于不同主机(当然同一主机也是可以的,只不过同一主机用这种socket机制显得不那么高效)上的进程之间进行通信; 阅读全文
posted @ 2020-03-18 03:36 Linux-1874 阅读(1508) 评论(0) 推荐(2) 编辑
摘要: 其实nginx面向客户端一侧它除了可以代理http或https的请求外,它还可以代理tcp的请求,因为nginx它本身工作在应用层,通常情况下我们把它代理tcp的请求叫做伪四层调度;在之前的文章中我们有说到过四层调度,比如LVS,它就是一个纯粹的四层调度,用户的请求报文根本就不会到达应用层,在TCP通信子网的三层或四层中就会把用户的请求处理(转发)调度给后端主机; 阅读全文
posted @ 2020-03-12 23:17 Linux-1874 阅读(1638) 评论(0) 推荐(0) 编辑
摘要: 假如我们后端服务器有一台服务出现故障,nginx会不会把用户的请求调度到出现故障的服务器上呢?我们知道在lvs做调度器时,前端lvs会把用户的请求调度到出现故障的服务器上,我们需要借助keepalived或者其他辅助服务去实现对后端服务器做健康状态监测,才能把用户的请求不调度到有故障的后端服务器上,nginx会不会呢? 阅读全文
posted @ 2020-03-11 23:44 Linux-1874 阅读(5289) 评论(1) 推荐(1) 编辑
摘要: 总结一点,nginx代理动态资源和代理http资源的思想是类似的,只是使用的指令不一样;尤其对于缓存,两者的思想几乎完全一致,只是使用的模块和指令不同而已;对于动态资源我们除了要指定被代理的地址外,还需要指定被代理端资源路径,导入nginx变量与fastcgi变量对应的配置指令文件;对于缓存,两者没有什么区别; 阅读全文
posted @ 2020-03-06 23:46 Linux-1874 阅读(2368) 评论(0) 推荐(0) 编辑
摘要: 今天来聊一聊Nginx是怎么反向代理,怎么防盗链;前文的最后我们提到了防盗链,到底什么是防盗链呢?在我们平时上网相信很多人都遇到过这样的情况,我们打开一个网页,在里面可以看到很多裂图,看不到图片,或者看到此图片仅某某网站网友交流使用之类的,这就是防盗链;我们知道在一个网页里面,里面的资源不一定都是来自一个服务器的,比如图片很可能来自图片服务器,js、css很可能来自其他静态资源服务器上;所以稍微懂点的人就知道如何将别人网站上的图片、js文件呀链接到自己的网站使用,这种行为就叫盗用别人家的资源,简称盗链 阅读全文
posted @ 2020-03-05 23:42 Linux-1874 阅读(36341) 评论(4) 推荐(1) 编辑
摘要: 要让nginx工作为https服务器,首先我们要对其申请证书,有关CA服务器搭建,以及证书申请相关原理说明请参考https://www.cnblogs.com/qiuhom-1874/p/12237944.html,这里说下过程,首先我们要准备一台CA(可以是本机),然后在nginx服务器上生成证书申请文件,然后把该文件发送给CA服务器,然后CA服务器签发证书申请文件生成对应的证书,然后CA把签好的证书文件发给nginx服务器,然后nginx服务器拿到证书后在配置文件中配置使用证书即可,当然以上步骤也可以直接在CA上做,最后把生成的私钥文件和证书发送给nginx服务器 阅读全文
posted @ 2020-03-04 00:44 Linux-1874 阅读(2239) 评论(0) 推荐(0) 编辑
摘要: 通常情况下长连接我们需要参考两个点,第一个点是时间,第二个点是请求的文件数量;比如用户在一定时间内请求的文件数量达到一定数量就断开,这种可防止那种一直请求服务器上的资源不给后续请求机会的连接;另一种就是用户请求的资源很少,我们对于这种请求应该规定一个时间,不能够也不应该让一个空闲请求一直连接着服务器;通常情况都是结合二者来定义长连接; 阅读全文
posted @ 2020-02-29 19:08 Linux-1874 阅读(2122) 评论(2) 推荐(0) 编辑