关于nginx:nginx-error-invalid-PID-number-in-nginxpid-的解决办法

nginx 批改配置文件后,重启的时候呈现了,这个提醒。 `nginx: [error] invalid PID number "" in "/tmp/nginx.pid"` 。 意思是说 不能在文件`/tmp/nginx.pid`中找到无效的 PID(过程ID) 。解决的方法有两种,第一kill掉nginx 主过程,而后启动nginx 。 第二: 把nginx的主过程的pid写入 nginx.pid文件,而后失常的重启。第一种办法杀掉nginx主过程,而后重启# 重启前肯定要先查看,配置文件是否正确,没有问题再重启nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful# 关掉nginx 的所有过程killall nginx# 重新启动 nginxnginx第二种办法把nginx的过程号从新写入 nginx.pid 中,而后失常重启# 首先找到nginx过程 pidps aux | grep "nginx: master" | grep -v pts | awk '{print $2;}'# 或者间接写入#须要留神的是, nginx.pid 的文件的门路,不同的配置,可能门路是不同的。 能够从 nginx.conf 的主配置文件中取得。echo `ps aux | grep "nginx: master" | grep -v pts | awk '{print $2;}'` > /tmp/nginx.pid# 而后重启nginx -s reload找起因nginx 重启的时候,须要晓得,本身的PID是多少,而这个值是写在 nginx.pid 中,如果这个文件的值被批改或者删除,就会呈现问题。这个值是能够被批改的,如果把外面的值批改成其余过程的PID,用root账号重启nginx的时候,领有该PID的过程一样会被kill掉。

August 11, 2020 · 1 min · jiezi

关于nginx:Nginx-步骤学习

终端连贯近程服务器ssh name@ip //其中name指服务器登录用户名 ip指服务器地址#例:ssh root@121.196.195.3回车,输出服务器明码,不出意外曾经连上了你的服务器,接下来随心所欲吧。 根本配置启动nginx间接启动 在CentOS7.4版本里(低版本是不行的),是能够间接间接应用nginx启动服务的。 nginx应用systemctl命令启动 还能够应用个Linux的命令进行启动,我个别都是采纳这种办法进行应用。因为这种办法无论启动什么服务,都是一样的,只是换一下服务的名字(不必减少额定的记忆点)。 systemctl start nginx.service输出命令后,没有任何提醒,那咱们如何晓得Nginx服务曾经启动了哪?能够应用Linux的组合命令,进行查问服务的运行状况。 ps aux | grep nginx如果启动胜利会呈现如上面相似的后果。 root 20152 0.0 0.0 46392 976 ? Ss 13:23 0:00 nginx: master process nginxnginx 20153 0.0 0.1 46788 2172 ? S 13:23 0:00 nginx: worker processroot 20221 0.0 0.0 112648 964 pts/0 R+ 13:33 0:00 grep --color=auto nginx有这三条记录,阐明咱们Nginx被失常开启了。 进行进行Nginx服务的四种办法进行Nginx 办法有很多种,能够依据需要采纳不一样的办法,咱们一个一个阐明。 立刻进行服务nginx -s stop这种办法比拟强硬,无论过程是否在工作,都间接进行过程。 从容进行服务nginx -s quit这种办法较stop相比就比拟温和一些了,须要过程实现当前工作后再进行。 killall 办法杀死过程这种办法也是比拟横蛮的,咱们间接杀死过程,然而在下面应用没有成果时,咱们用这种办法还是比拟好的。 killall nginxsystemctl 进行systemctl stop nginx.service重启Nginx服务有时候咱们须要重启Nginx服务,这时候能够应用上面的命令。 ...

August 11, 2020 · 2 min · jiezi

关于nginx:Nginx-流控搞不好背锅跑路少不了

链接:https://www.cnblogs.com/zjfja...作者:雪山上的蒲公 前几天,以前一个老同事在微信上和我吐槽,一次周未劳动,忽然收到公司服务器告警,有一台服务器挂掉了,导致影响一部分公司业务的运行,预先查看发现原来是前端Nginx流控配置的不够迷信,不得不背上一锅,影响了这个月的KPI考核和当年中的加薪指标。 可见这Nginx流控的配置还是很重要,所以,本篇文章将会介绍Nginx的流量限度的基础知识和高级配置,”流量限度”在Nginx Plus中也实用。 流量限度(rate-limiting),是Nginx中一个十分实用,却常常被谬误了解和谬误配置的性能。咱们能够用来限度用户在给定工夫内HTTP申请的数量。申请,能够是一个简略网站首页的GET申请,也能够是登录表单的POST申请。 流量限度能够用作平安目标,比方能够减慢暴力明码破解的速率。通过将传入申请的速率限度为实在用户的典型值,并标识指标URL地址(通过日志),还能够用来抵挡DDOS攻打。更常见的状况,该性能被用来爱护上游应用服务器不被同时太多用户申请所压垮。 Nginx如何限流Nginx的”流量限度”应用漏桶算法(leaky bucket algorithm),该算法在通信和分组替换计算机网络中宽泛应用,用以解决带宽无限时的突发状况。就好比,一个桶口在倒水,桶底在漏水的水桶。如果桶口倒水的速率大于桶底的漏水速率,桶外面的水将会溢出;同样,在申请解决方面,水代表来自客户端的申请,水桶代表依据”先进先出调度算法”(FIFO)期待被解决的申请队列,桶底漏出的水代表来到缓冲区被服务器解决的申请,桶口溢出的水代表被抛弃和不被解决的申请。 配置根本的限流“流量限度”配置两个次要的指令,limit_req_zone和limit_req,如下所示: limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;server {   location /login/ {     limit_req zone=mylimit;  proxy_pass http://my_upstream;  }}limit_req_zone指令定义了流量限度相干的参数,而limit_req指令在呈现的上下文中启用流量限度(示例中,对于”/login/”的所有申请)。limit_req_zone指令通常在HTTP块中定义,使其可在多个上下文中应用,它须要以下三个参数: Key - 定义利用限度的申请个性。示例中的Nginx变量remote_addr,占用更少的空间)Zone - 定义用于存储每个IP地址状态以及被限度申请URL拜访频率的共享内存区域。保留在内存共享区域的信息,意味着能够在Nginx的worker过程之间共享。定义分为两个局部:通过zone=keyword标识区域的名字,以及冒号前面跟区域大小。16000个IP地址的状态信息,大概须要1MB,所以示例中区域能够存储160000个IP地址。Rate - 定义最大申请速率。在示例中,速率不能超过每秒10个申请。Nginx实际上以毫秒的粒度来跟踪申请,所以速率限度相当于每100毫秒1个申请。因为不容许”突发状况”(见下一章节),这意味着在前一个申请100毫秒内达到的申请将被回绝。当Nginx须要增加新条目时存储空间有余,将会删除旧条目。如果开释的空间仍不够包容新记录,Nginx将会返回 503状态码(Service Temporarily Unavailable)。另外,为了避免内存被耗尽,Nginx每次创立新条目时,最多删除两条60秒内未应用的条目。limit_req_zone指令设置流量限度和共享内存区域的参数,但实际上并不限度申请速率。所以须要通过增加limit_req指令,将流量限度利用在特定的location或者server块。在下面示例中,咱们对/login/申请进行流量限度。 当初每个IP地址被限度为每秒只能申请10次/login/,更精确地说,在前一个申请的100毫秒内不能申请该URL。 解决突发如果咱们在100毫秒内接管到2个申请,怎么办?对于第二个申请,Nginx将给客户端返回状态码503。这可能并不是咱们想要的后果,因为利用实质上趋向于突发性。相同地,咱们心愿缓冲任何超额的申请,而后及时地解决它们。咱们更新下配置,在limit_req中应用burst参数: location /login/ {   limit_req zone=mylimit burst=20;    proxy_pass http://my_upstream;}burst参数定义了超出zone指定速率的状况下(示例中的mylimit区域,速率限度在每秒10个申请,或每100毫秒一个申请),客户端还能发动多少申请。上一个申请100毫秒内达到的申请将会被放入队列,咱们将队列大小设置为20。 这意味着,如果从一个给定IP地址发送21个申请,Nginx会立刻将第一个申请发送到上游服务器群,而后将余下20个申请放在队列中。而后每100毫秒转发一个排队的申请,只有当传入申请使队列中排队的申请数超过20时,Nginx才会向客户端返回503。 无提早的排队配置burst参数将会使通信更晦涩,然而可能会不太实用,因为该配置会使站点看起来很慢。在下面的示例中,队列中的第20个包须要期待2秒能力被转发,此时返回给客户端的响应可能不再有用。要解决这个状况,能够在burst参数后增加nodelay参数: location /login/ {   limit_req zone=mylimit burst=20 nodelay;   proxy_pass http://my_upstream;}应用nodelay参数,Nginx仍将依据burst参数调配队列中的地位,并利用已配置的速率限度,而不是清理队列中期待转发的申请。相同地,当一个申请达到“太早”时,只有在队列中能调配地位,Nginx将立刻转发这个申请。将队列中的该地位标记为”taken”(占据),并且不会被开释以供另一个申请应用,直到一段时间后才会被开释(在这个示例中是,100毫秒后)。 假如如前所述,队列中有20个空位,从给定的IP地址收回的21个申请同时达到。Nginx会立刻转发这个21个申请,并且标记队列中占据的20个地位,而后每100毫秒开释一个地位。如果是25个申请同时达到,Nginx将会立刻转发其中的21个申请,标记队列中占据的20个地位,并且返回503状态码来回绝剩下的4个申请。 当初假如,第一组申请被转发后101毫秒,另20个申请同时达到。队列中只会有一个地位被开释,所以Nginx转发一个申请并返回503状态码来回绝其余19个申请。如果在20个新申请达到之前曾经过来了501毫秒,5个地位被开释,所以Nginx立刻转发5个申请并回绝另外15个。 成果相当于每秒10个申请的“流量限度”。如果心愿不限度两个申请间容许距离的状况下施行“流量限度”,nodelay参数是很实用的。 留神:对于大部分部署,咱们倡议应用burst和nodelay参数来配置limit_req指令。 高级配置示例通过将根本的“流量限度”与其余Nginx性能配合应用,咱们能够实现更细粒度的流量限度。 白名单 上面这个例子将展现,如何对任何不在白名单内的申请强制执行“流量限度”: geo $limit {  default        1;  10.0.0.0/8       0;   192.168.0.0/64     0;}map $limit $limit_key {    0 "";   1 $binary_remote_addr;}limit_req_zone $limit_key zone=req_zone:10m rate=5r/s;server { location / {      limit_req zone=req_zone burst=10 nodelay;     # ...    }}这个例子同时应用了geo和map指令。geo块将给在白名单中的IP地址对应的$limit变量调配一个值0,给其它不在白名单中的调配一个值1。而后咱们应用一个映射将这些值转为key,如下: 如果变量的值是,limit_key变量将被赋值为空字符串如果变量的值是,limit_key变量将被赋值为客户端二进制模式的IP地址 两个指令配合应用,白名单内IP地址的$limit_key变量被赋值为空字符串,不在白名单内的被赋值为客户端的IP地址。当limit_req_zone后的第一个参数是空字符串时,不会利用“流量限度”,所以白名单内的IP地址(10.0.0.0/8和192.168.0.0/24 网段内)不会被限度。其它所有IP地址都会被限度到每秒5个申请。limit_req指令将限度利用到/的location块,容许在配置的限度上最多超过10个数据包的突发,并且不会提早转发。 ...

August 11, 2020 · 1 min · jiezi

关于nginx:Nginx

一、集群架构服务器架构集群: 多台服务器组成的响应大并发、高数据量拜访的架构体系。特点: 老本高可能升高单台服务器的压力,应用流量平均分配到多台服务器 使网站服务架构更加平安稳固 服务器: 提供某种或者多种服务(性能)的机器(计算机) 硬件:性能比拟好的电脑主机软件:实现各种服务反对特定的协定的软件 1、web服务软件提供http https协定的服务器,网站网页拜访的性能 Apache Nginx 2、数据库mysql oracle 3、负载平衡负载平衡服务器,散发申请到不同的服务器。使流量平均分配。 硬件级别:F5 性能好,价格高 软件级别:性价比高 lvs linux下散发软件 Nginx upstream性能散发 4、资源服务器资源服务区存储动态资源,css、js、图片、视频。个别此服务器会有硬盘(SSD固态)读写疾速,带宽更大。 5、反向代理服务器反向代理服务器具备代理申请到对应的服务器的性能,也具备缓存的性能 squid、 varnish、 Nginx、 6、高可用高可用服务器,用来监控负载平衡服务器,如果一旦负载平衡宕机、会接替负载平衡服务器的工作,持续进行网络的散发工作。 能够认为是负载平衡的备用服务器 heartbeat keeplive 7、缓存软件memcached redis 8、cdn内容散发二、Nginx的介绍它能够高并发连贯,官网测试可能撑持5万并发连贯,在理论生产环境中能够撑持2到4万并发连贯。内存耗费少Nginx+php(FastCGI)服务器在3万并发连贯下, 开启的10个Nginx过程耗费150MB内存(15MB * 10=150MB) 开启的64个php-cgi过程耗费1280MB内存(20MB*64=1280MB) 老本低廉购买F5 BIG-IP ,NetScaler等硬件负载平衡交换机须要10多万甚至几十万人民币。而Nginx为开源软件,能够收费试用,并且可用于商业用途。 配置文件非常简单:通俗易懂,即便非专业管理员也能看懂。反对 rewrite重写规定:能依据域名、URL的不同,将HTTP申请分到不同的后端服务器群组。内置的健康检查性能:如果nginx proxy后端的某台服务器宕机了,不会影响前端拜访。节俭带宽,反对gzip压缩。稳定性高:用于反向代理,宕机的概率微不足道。反对热部署。在不间断服务的状况下,对软件版本升级。 nginx在反向代理,rewrite规定,稳定性,动态化文件解决,内存耗费等方面,体现出了很强的劣势,选用nginx取代传统的apache 服务器,将会取得多方面的性能晋升。三、装置Nginx1、装置依赖gcc 装置装置 nginx 须要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则须要装置: yum install gcc gcc-c++PCRE pcre-devel 装置PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包含 perl 兼容的正则表达式库。 nginx 的 http 模块应用 pcre 来解析正则表达式,所以须要在 linux 上装置 pcre 库,pcre-devel 是应用 pcre 开发的一个二次开发库。nginx也须要此库。 ...

August 8, 2020 · 6 min · jiezi

关于nginx:Nginx

一、集群架构服务器架构集群: 多台服务器组成的响应大并发、高数据量拜访的架构体系。特点: 老本高可能升高单台服务器的压力,应用流量平均分配到多台服务器 使网站服务架构更加平安稳固 服务器: 提供某种或者多种服务(性能)的机器(计算机) 硬件:性能比拟好的电脑主机软件:实现各种服务反对特定的协定的软件 1、web服务软件提供http https协定的服务器,网站网页拜访的性能 Apache Nginx 2、数据库mysql oracle 3、负载平衡负载平衡服务器,散发申请到不同的服务器。使流量平均分配。 硬件级别:F5 性能好,价格高 软件级别:性价比高 lvs linux下散发软件 Nginx upstream性能散发 4、资源服务器资源服务区存储动态资源,css、js、图片、视频。个别此服务器会有硬盘(SSD固态)读写疾速,带宽更大。 5、反向代理服务器反向代理服务器具备代理申请到对应的服务器的性能,也具备缓存的性能 squid、 varnish、 Nginx、 6、高可用高可用服务器,用来监控负载平衡服务器,如果一旦负载平衡宕机、会接替负载平衡服务器的工作,持续进行网络的散发工作。 能够认为是负载平衡的备用服务器 heartbeat keeplive 7、缓存软件memcached redis 8、cdn内容散发二、Nginx的介绍它能够高并发连贯,官网测试可能撑持5万并发连贯,在理论生产环境中能够撑持2到4万并发连贯。内存耗费少Nginx+php(FastCGI)服务器在3万并发连贯下, 开启的10个Nginx过程耗费150MB内存(15MB * 10=150MB) 开启的64个php-cgi过程耗费1280MB内存(20MB*64=1280MB) 老本低廉购买F5 BIG-IP ,NetScaler等硬件负载平衡交换机须要10多万甚至几十万人民币。而Nginx为开源软件,能够收费试用,并且可用于商业用途。 配置文件非常简单:通俗易懂,即便非专业管理员也能看懂。反对 rewrite重写规定:能依据域名、URL的不同,将HTTP申请分到不同的后端服务器群组。内置的健康检查性能:如果nginx proxy后端的某台服务器宕机了,不会影响前端拜访。节俭带宽,反对gzip压缩。稳定性高:用于反向代理,宕机的概率微不足道。反对热部署。在不间断服务的状况下,对软件版本升级。 nginx在反向代理,rewrite规定,稳定性,动态化文件解决,内存耗费等方面,体现出了很强的劣势,选用nginx取代传统的apache 服务器,将会取得多方面的性能晋升。三、装置Nginx1、装置依赖gcc 装置装置 nginx 须要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则须要装置: yum install gcc gcc-c++PCRE pcre-devel 装置PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包含 perl 兼容的正则表达式库。 nginx 的 http 模块应用 pcre 来解析正则表达式,所以须要在 linux 上装置 pcre 库,pcre-devel 是应用 pcre 开发的一个二次开发库。nginx也须要此库。 ...

August 8, 2020 · 6 min · jiezi

关于nginx:NginxWebUI-180版本发布

Nginx作为一个轻量级的HTTP服务器,相比Apache劣势也是比拟显著的,在性能上它占用资源少,能反对更高更多的并发连贯,从而达到进步拜访效率;在性能上它是一款十分优良的代理服务器与负载平衡服务器。 常常在运维面试中,面试官会问到,你们用什么HTTP服务器啊?为什么用它?? 1、作为WEB服务器而言,Nginx解决动态文件的效率比拟高 2、作为代理服务器而言,Nginx能够实现无缓存的反向代理减速来进步WEB站点的运行速度,进步用户拜访的体验 3、作为负载平衡服务器而言,反对的利用较多,同时也反对容错性能,自带算法进行负载平衡调度 4、性能方面而言,采纳内核poll模型,反对更多的并发连贯,官网显示最大可反对50000个并发连贯的申请响应,但占用资源很少且十分稳固 所以,无论是开发、运维、测试,都会接触到Nginx,而且都须要把握一些Nginx的常识,像装置、配置、调试等,特地是对于Nginx配置尤其重要。 之前,民工哥也给大家具体介绍这款工具:Nginx WebUI 太赞了!墙裂举荐这款网页版 Nginx 配置生成器,好用到爆! 具体的性能与操作介绍,下面的文章都有。 除了nginx的conf可视化配置以外, nginxWebUI还提供以下性能: 动态网页包可上传并进行对立治理ssl证书可在线申请并定时续签. 对立对ssl进行治理及部署集成nginx效验, 重载, 启动, 进行命令, 可在网页上对nginx运行状态进行操作可在一台服务器上远程管理其余nginxWebUI服务器, 能够在一个网址上批改复数的nginx集群配置, 同时提供集群nginx服务运行状态监控性能, 应用邮件进行宕机揭示可对nginx中配置的负载平衡节点进行运行状态监控,  应用邮件进行宕机揭示.集成nginx日志解析性能, 可配置是否生成nginx日志及定时对nginx日志进行解析可反向导入已有的nginx配置文件, 可疾速克隆已有反向代理配置, 可查看反向代理的端口占用提供零碎cpu 内存 硬盘运行状态监测目前NginxWebUI 1.8.0 公布,同时更新了一些新的性能: 参数配置项增加程序配置动态文件增加更新性能增加参数模板性能更新docker内的nginx版本为1.18增加立即解析今日日志 性能替换配置文件时,革除遗留旧配置文件增加conf文件根本导入性能

August 8, 2020 · 1 min · jiezi

关于nginx:Nginx-反向代理负载均衡及搭建高可用集群

Nginx 反向代理,负载平衡及搭建高可用集群前提筹备首先是对于linux环境下的装置(本地机器是Windows版本,大家能够应用Vmware,然而须要配置网络连接等,这里就不再展现虚拟机上的演示。这里应用到集体的阿里云云服务器搭配上xftp与xshell来进行文件的上传与连贯命令行的输出) 留神:以下命令皆为CentOS7所应用。 上面开始进行系列依赖的装置: <div align = "center"><img src= "http://maycope.cn/images/image-20200807092205021.png"></div> gcc 装置:yum -y install gcc automake autoconf libtool makeyum install gcc gcc-c++pcre 装置cd /usr/local/srcwget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gztar -zxvf pcre-8.40.tar.gzcd pcre-8.40./configuremake && make installzlib 装置cd /usr/local/srcwget http://zlib.net/zlib-1.2.11.tar.gz wget http://www.zlib.net/zlib-1.2.11.tar.gztar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configuremake && make installyum install -y zlib zlib-developenssl 装置cd /user/local/scrwget https://www.openssl.org/source/openssl-1.0.1t.tar.gztar -zxvf openssl-1.0.1t.tar.gznginx 装置cd /user/local/scrwget http://nginx.org/download/nginx-1.1.10.tar.gztar zxvf nginx-1.1.10.tar.gzcd nginx-1.1.10./configuremake && make install启动nginx/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf实现之后能够后行查看本人的本人的服务器凋谢了哪些的端口: firewall-cmd --list-all 若是没有进行端口的开发能够应用如下命令进行端口的凋谢: ...

August 8, 2020 · 3 min · jiezi

关于nginx:Nginx-反向代理负载均衡及搭建高可用集群

Nginx 反向代理,负载平衡及搭建高可用集群前提筹备首先是对于linux环境下的装置(本地机器是Windows版本,大家能够应用Vmware,然而须要配置网络连接等,这里就不再展现虚拟机上的演示。这里应用到集体的阿里云云服务器搭配上xftp与xshell来进行文件的上传与连贯命令行的输出) 留神:以下命令皆为CentOS7所应用。 上面开始进行系列依赖的装置: <div align = "center"><img src= "http://maycope.cn/images/image-20200807092205021.png"></div> gcc 装置:yum -y install gcc automake autoconf libtool makeyum install gcc gcc-c++pcre 装置cd /usr/local/srcwget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gztar -zxvf pcre-8.40.tar.gzcd pcre-8.40./configuremake && make installzlib 装置cd /usr/local/srcwget http://zlib.net/zlib-1.2.11.tar.gz wget http://www.zlib.net/zlib-1.2.11.tar.gztar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configuremake && make installyum install -y zlib zlib-developenssl 装置cd /user/local/scrwget https://www.openssl.org/source/openssl-1.0.1t.tar.gztar -zxvf openssl-1.0.1t.tar.gznginx 装置cd /user/local/scrwget http://nginx.org/download/nginx-1.1.10.tar.gztar zxvf nginx-1.1.10.tar.gzcd nginx-1.1.10./configuremake && make install启动nginx/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf实现之后能够后行查看本人的本人的服务器凋谢了哪些的端口: firewall-cmd --list-all 若是没有进行端口的开发能够应用如下命令进行端口的凋谢: ...

August 8, 2020 · 3 min · jiezi

关于nginx:宝塔开发多域名问题

[问题形容]1.我应用php开发我的项目2.应用有很多个我的项目3.我应用的是环境是 nginx+php-fpm4.每次新增一个我的项目,为了不便本地调试和不影响其余我的项目开发我都须要新增host,在nginx配置server_name辨别不同的我的项目 xx1.xx.com 127.0.0.1xx2.xx.com 127.0.0.1[问题剖析]我所有的A记录都是指向127.0.0.1,有没有一个泛域名解析能够指向127.0.0.1,不必每次修复127.0.0.1 当初有了,我在我的dns中增加了个泛域名解析 *.localhost.litongjava.com 127.0.0.1因为指向的127.0.0.1 所以不存域名抵触的问题测试后果如下

August 7, 2020 · 1 min · jiezi

关于nginx:前端自动化集成部署交付实践

前言随着前后端拆散利用模式的推广,前端我的项目可独立部署保护上线,不再仅仅将前端开发后打包的文件间接丢到一个文件目录下就完事大吉了,当初对前端来说也须要理解运维的相干常识,本文旨在介绍一些相干的运维概念以及一些前端运维的实际。 CI/CD 继续集成continuous integration 继续集成是一种软件实际,流程为:开发 => 打包 => 集成 => 测试继续交付continuous delivery 继续交付是一种软件工程手法,流程为:测试 => 公布继续部署continous deployment 继续部署是在继续交付的管道中公布版本给最终用户的一种软件工程流程,流程为:公布 => 部署上线继续集成、继续交付、继续部署是公布流程的不同阶段 Docker 容器 + 镜像docker 是一个开源的利用容器引擎。开发者能够打包本人的利用到容器外面,而后迁徙到其余机器的 docker 利用中;开发者能够疾速制作一个本人自定义的镜像,疾速分享,也能够上传到镜像库进行存取和治理;容器之间互相隔离不抵触,硬件资源共享。Docker in Docker容器内仅部署 docker 命令行工具(作为客户端),理论执行交由宿主机内的 docker-engine(服务器)Jenkins 概念Jenkins 是一个基于Java语言开发的CI继续构建工具,次要用于继续、主动的构建/测试软件我的项目。它能够执行你事后设定好的设置和脚本,也能够和 Git工具做集成,实现主动触发和定时触发器构建。Gitlab 概念gitlab既是一种服务,也是一种软件。既能够在gitlab.com下来租用服务,也能够下载gitlab阮籍你本人搭建服务Nginx 概念Nginx采纳C进行编写,解决动态文件,索引文件以及主动索引;关上文件描述符缓冲。无缓存的反向代理减速,简略的负载平衡和容错。FastCGI,简略的负载平衡和容错。模块化的构造。Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务 Nexus 概念制品仓库: 构建过程的输入物,包含软件包,测试报告,利用配置文件等可在服务器上间接 运行或可查看二进制模式的文件,通常称之为二进制软件制品。具备版本治理,历史治理,权限校验等性能。Nexus可在本人的局域网内搭建本人的近程仓库服务器,称为私服,私服服务器即是公司外部的maven近程仓库,私服还充当一个代理服务器,可从互联网地方仓库主动下载 proxy 本地仓库,通常咱们会部署本人的构件到这一类型的仓库。比方公司的第二方库hosted 代理仓库,它们被用来代理近程的公共仓库,如maven地方仓库group 仓库组,用来合并多个hosted/proxy仓库,当你的我的项目心愿在多个repository应用资源时就不须要屡次援用了,只须要援用一个group即可Ansible 概念ansible是基于Python开发的自动化运维工具。其劣势在于能够批量操作,基本原理是通过ansible的外围进行通过ssh传输的通信进行相干的散发解决,进行user与host的通信Modules执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还能够自定义模块 Inventory治理主机的清单,默认是/etc/ansible/hosts文件 Playbook工作剧本(又称工作集),编排定义Ansible工作集的配置文件,由Ansible程序顺次执行,yaml格局 Plugins插件,模块性能的补充,常有连贯类型插件,循环插件,变量插件,过滤插件,插件性能用的较少 API提供给第三方程序调用的应用程序编程接口 实际操作环境: linux/centos7 操作内容: 一台 gitlab + jenkins + ansible 服务器推送多台 nginx 服务器 docker装置依赖yum install -y yum-utils device-mapper-persistent-data lvm2应用阿里云源装置sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce启动dockersystemctl start dockersystemctl enable docker可配置阿里云容器镜像加速器阿里云容器镜像服务 ...

August 6, 2020 · 3 min · jiezi

关于nginx:Centos下-Nginx安装与配置

搬运至我原来的简书主页https://www.jianshu.com/p/d51... Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具备占有内存少,稳定性低等劣势。它最常的用处是提供反向代理服务。 装置在Centos下,yum源不提供nginx的装置,能够通过切换yum源的办法获取装置。目前很多像centos7零碎曾经自带这几个库,所以装置前能够先查看一下本地是否曾经存在。存在可间接跳至第四步骤。须要应用安装包编译装置的,如下。以下命令均需root权限执行: 首先装置必要的库(nginx 中gzip模块须要 zlib 库,rewrite模块须要 pcre 库,ssl 性能须要openssl库)。选定/usr/local为装置目录,以下具体版本号依据理论扭转。 1.装置PCRE库 $ cd /usr/local/$ sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz$ sudo tar -zxvf pcre-8.36.tar.gz$ cd pcre-8.36$ sudo ./configure$ sudo make$ sudo make install2.装置zlib库 $ cd /usr/local/ $ sudo wget http://zlib.net/zlib-1.2.8.tar.gz$ sudo tar -zxvf zlib-1.2.8.tar.gz$ cd zlib-1.2.8$ sudo ./configure$ sudo make$ sudo make install3.装置ssl $ cd /usr/local/$ sudo wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz$ sudo tar -zxvf openssl-1.0.1j.tar.gz$ sudo ./config$ sudo make$ sudo make install4.装置nginx ...

August 4, 2020 · 2 min · jiezi

关于nginx:Ubuntu-下-使用nginx设置用户名密码访问

1.下载工具 sudo apt-get install apache2-utils增加用户名明码htpasswd -c /etc/nginx/.htpasswd username输出明码,提醒如下: New password:Re-type new password:Adding password for user exampleuserhtpaswd的.htpasswd文件格式如下: login:password留神:htpasswd须要对nginx运行用户可拜访 增加配置到NGINX配置 如: server {listen 80;server_name home.moosrtc.com;location / { root /codes/index; index index.htm index.html; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }重启 sudo service nginx restart

August 3, 2020 · 1 min · jiezi

关于nginx:Nginx配置密码访问访问网页需输入用户名密码

须要实现的需要如下: nginx做web服务,但因为平安问题需要,拜访网页时须要输出用户名和明码进行认证,成果如下服务器零碎是centos7.x实现步骤: 1. 装置明码生成工具$ yum -y install httpd-tools2. 生成用户和密码文件生成用户和明码 $ htpasswd -c /usr/local/nginx/password username# 回车后输出明码# -c 创立一个加密文件查看生成的用户和明码 如果要批改明码,或者删除明码,请参考上面操作 删除用户和明码 $ htpasswd -D /usr/local/nginx/password username# -D 删除指定的用户批改用户和明码 $ htpasswd -D /usr/local/nginx/password username$ htpasswd -b /usr/local/nginx/password username pass# -D 删除指定的用户# -b htpassswd命令行中一并输出用户名和明码而不是依据提醒输出明码# -p htpassswd命令不对明码进行进行加密,即明文明码3. 配置Nginx认证找到 nginx 配置文件,通常默认的配置文件在/usr/local/nginx/conf/nginx.conf,要对整个站点开启验证,需在配置文件中的server加上认证配置auth_basic 和 auth_basic_user_file server { listen 80; server_name localhost; # ... auth_basic "请输出用户和明码"; # 验证时的提示信息 auth_basic_user_file /usr/local/nginx/password; # 认证文件 location / { root /var/www; index index.html index.htm; } # ...}4. 重启/重载Nginx使站点的认证失效/usr/local/nginx/sbin/nginx -s reload这时候再新拜访网站,则会提醒须要输出用户名和明码,成果如下面第一张成果图示。 ...

August 1, 2020 · 1 min · jiezi

关于nginx:Centos7-Nginx区分路径部署多个Vue项目

Nginx辨别门路部署多个Vue我的项目nginx 多动态文件部署。我集体博客我的项目占用了nginx根门路,而我只有一个域名,也不筹备用二级域名了, 所以就间接用门路辨别开。一个域名,只部署一个动态文件服务,那很简略,只用把打包后文件放上去就行。多个Vue我的项目次要就是门路问题,动态js文件以及自定义的路由。原本不打算把这篇文章般到思否的,然而感觉好多人问这个对于nginx部署vue的我的项目。 集体我的项目部署地址我的项目Github地址: https://github.com/CoderCharm... 我的项目线上部署地址: https://www.charmcode.cn/app/... 环境vue 2.6.11vue-router 3.3.1vue-cli 4.4.0因为我用的vue-cli 4,所以我的项目根门路下默认没有 vue.config.js文件, 我在官网看到对于这个vue.config.js是这样形容的. 参考官网阐明https://cli.vuejs.org/zh/config/:有些针对 @vue/cli 的全局配置,例如你习用的包管理器和你本地保留的 preset,都保留在 home 目录下一个名叫 .vuerc 的 JSON 文件。你能够用编辑器间接编辑这个文件来更改已保留的选项。 你也能够应用 vue config 命令来审查或批改全局的 CLI 配置增加配置vue.config.js 文件 动态资源路由js,css等门路然而 vue config 是全局的配置,我这个我的项目间接批改这里不适合,于是我就在我的项目 根门路 下本人手动增加了vue.config.js // 参考 https://cli.vuejs.org/zh/guide/deployment.html#github-pagesmodule.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/app/mall/' // /app/mall/ 对应前面`nginx`门路,这里增加的目标是其余动态资源文件对立前缀门路 : '/',};批改src/router/index.js, 我的项目页面跳转路由const router = new VueRouter({ base: '/app/mall', // 次要增加这个 /app/mall 留神这个 和下面的统一,为nginx location门路, 也就是申请门路 routes, mode: 'history'});批改 src/config/index.js 我的项目生产申请地址(非必要)非必要,这个中央每个人封装的都不一样,默认会申请 部署的环境地址。export let appConfig = { development: 'http://127.0.0.1:8010', // 本地开发 (ps:vue-cli会主动帮咱们辨别生产开发,npm run serve就是开发, production: 'https://www.your_domain.com', // 生产地址 npm run build 默认为生产};而后 我是在src/utils/url.js 文件外面 辨别前缀的, 最初在 src/utils/request.js 文件外面应用。批改好之后,能够npm run serve看看,辨别好之后是否失常拜访,是否有改错。没有改错能够间接npm run build 生成动态文件 ...

July 29, 2020 · 1 min · jiezi

关于nginx:解决-nginx-跨域-问题

在nginx的配置文件中减少: location / { add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS'; add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Headers *; add_header Access-Control-Max-Age 1728000; if ($request_method = 'OPTIONS') { return 204; }}

July 29, 2020 · 1 min · jiezi

关于nginx:Nginx配置404自定义页面

1. 批改nginx.conf httpnginx.conf 文件http 区域增加 fastcgi_intercept_errors on; http { ....... fastcgi_intercept_errors on;2. 配置conf server配置error_page 404 server { listen 80; server_name www.zhangguoye.com; index index.html index.htm; root /home/wwwroot; error_page 404 /404.html; location = /404.html { root /home/wwwroot/; # 在此目录下增加自定义的404.html }3. 重启nginx应用restart 或者 reload 重启nginx,使配置失效。

July 29, 2020 · 1 min · jiezi

关于nginx:Nginx-配置大文件上传

nginx问题遇到的问题: Nginx: 413 – Request Entity Too Large Error and SolutionTIMEOUT解决办法解决办法:在nginx的配置文件下(通常为xxx.conf),加上以下配置: client_max_body_size 50m; # 限度申请体的大小,若超过所设定的大小,返回413谬误,默认1mclient_header_timeout 1m; # 读取申请头的超时工夫,若超过所设定的大小,返回408谬误client_body_timeout 1m; # 读取申请实体的超时工夫,若超过所设定的大小,返回413谬误proxy_connect_timeout 60s; # http申请无奈立刻被容器(tomcat, netty等)解决,被放在nginx的待处理池中期待被解决。此参数为期待的最长工夫,默认为60秒,官网举荐最长不要超过75秒proxy_read_timeout 1m; # http申请被容器(tomcat, netty等)解决后,nginx会期待处理结果,也就是容器返回的response。此参数即为服务器响应工夫,默认60秒proxy_send_timeout 1m; # http申请被服务器解决完后,把数据传返回给Nginx的用时,默认60秒server { listen 80; server_name localhost; client_max_body_size 10m; client_header_timeout 5m; client_body_timeout 5m; proxy_connect_timeout 6000s; proxy_read_timeout 5m; proxy_send_timeout 5m; location / { # ... }} 重启nginx设置实现后,须要应用 reload 或者reload重启nginx

July 28, 2020 · 1 min · jiezi

关于nginx:解决nginx-反向代码-apache服务下的wordpress发生301循环重定向的问题

在应用nginx反向代码wordpress的过程中,因为wordpress会对拜访的申请进行域名与端口是否与配置信息雷同的判断,将导致应用301的循环重定向谬误。 问题重现nginx配置如下: server { listen 81; server_name www.baeldung.cn; error_log /mengyunzhi/log/baeldung.cn-nginx.log info; add_header Cache-Control public; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 转发host信息 proxy_set_header Host $host;wordpress设置站点的url地址为:http://www.baeldung.cn:81。则在上述两个配置下应用浏览器拜访:http://www.baeldung.cn:81则会执行如下流程: 问题在于:nginx在进行数据发设置的Host并不蕴含端口信息,所以wordpress接管到的申请是:http://www.baeldung.cn:8000此地址与http://www.baeldung.cn:81并不相同,所以给出了重定向的回复。浏览器接管到重定向,接着发动了对http://www.baeldung.cn:81的申请,周而复始浏览器便出了301重定向次数过多的提醒。 解决方案google尝试找了些对于nginx如何反向代理wordpress或nginx反向代码wordpress产生301 loop的问题,但并未找到答案。猜测可能是因为 wordpress这个重定向机制启用的工夫并不长,所以相干的问题裸露的不多造成的。 通过后面的流程图,最终猜测出了解决方案:转发时设置Host时退出端口号: proxy_set_header Host $host:$server_port;从新加载nginx配置后问题迎刃而解。 总结当一些问题查找不出起因的时候,须要联合控制台返回的信息并站在软件设计者的角度大胆地猜想一下。一旦猜出了方向,便能够依照猜的方向进行尝试。没准就真猜对了呢。 本文作者:河北工业大学梦云智开发团队 潘杰欢送各位学子报考我校!

July 23, 2020 · 1 min · jiezi

关于nginx:mac安装nginx

一、先装置brew国内疾速装置homebrew参考这篇文章https://zhuanlan.zhihu.com/p/...二、装置nginx应用命令brew install nginx装置最新版本的nginx三、保留nginx的装置信息 ==> nginxDocroot is: /usr/local/var/wwwThe default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so thatnginx can run without sudo.nginx will load all files in /usr/local/etc/nginx/servers/.To have launchd start nginx now and restart at login: brew services start nginxOr, if you don't want/need a background service you can just run: nginx如果想开机后盾运行:brew services start nginx不想开机运行:nginx四、常用命令 启动 nginx #浏览器拜访 127.0.0.1 测试是否胜利启动 重启 nginx -s reload 进行 nginx -s stop查看版本 nginx -v

July 22, 2020 · 1 min · jiezi

关于nginx:Nginx-操作小册

nginx配置的公共配置局部抽取进去在nginx.conf同文件夹下新建文件common_rules.conf # proxy_pass http://27.175.67.297:8000;proxy_pass https://wgcent.store.cn; 间接在nginx.conf中以include应用 location /wcg/api/order/paymentRequest { rewrite .* /wc/api/orider/tRequest break; include common_rules.conf; } location /wcg/api/order/queryPaymentStatus { rewrite .* /wc/api/order/querStatus break; include common_rules.conf; }

July 21, 2020 · 1 min · jiezi

关于nginx:nginx心得

nginx简介(参考百度)Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:)开发的,第一个公开版本0.1.0公布于2004年10月4日。其将源代码以类BSD许可证的模式公布,因它的稳定性、丰盛的功能集、示例配置文件和低系统资源的耗费而闻名。2011年6月1日,nginx 1.0.4公布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协定下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中体现较好,中国大陆应用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 nginx装置1.装置编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel2.装置 PCREcd /usr/local/src/wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz3.装置Nginxcd /usr/local/src/wget http://nginx.org/download/nginx-1.6.2.tar.gz参考(https://www.runoob.com/linux/...) nginx根本构造高度模块化的设计是 Nginx 的架构根底。Nginx 服务器被合成为多个模块,每个模块就是一个功能模块,只负责本身的性能,模块之间严格遵循“高内聚,低耦合”的准则 外围模块外围模块是 Nginx 服务器失常运行必不可少的模块,提供谬误日志记录、配置文件解析、事件驱动机制、过程治理等外围性能。 规范 HTTP 模块规范 HTTP 模块提供 HTTP 协定解析相干的性能,如:端口配置、网页编码设置、HTTP 响应头设置等。 可选 HTTP 模块可选 HTTP 模块次要用于扩大规范的 HTTP 性能,让 Nginx 能解决一些非凡的服务,如:Flash 多媒体传输、解析 GeoIP 申请、SSL 反对等。 邮件服务模块邮件服务模块次要用于反对 Nginx 的邮件服务,包含对 POP3 协定、IMAP 协定和 SMTP 协定的反对。 第三方模块第三方模块是为了扩大 Nginx 服务器利用,实现开发者自定义性能,如:Json 反对、Lua 反对等。参考(https://www.sohu.com/a/230364...) nginx基本功能web服务器、反向代理服务器负载平衡动静拆散nginx长处1.能够高并发连贯官网测试Nginx可能撑持5万并发连贯,理论生产环境中能够撑持2~4万并发连接数。 起因,次要是Nginx应用了最新的epoll(Linux2.6内核)和kqueue(freeBSD)网路I/O模型,而Apache应用的是传统的Select模型,其比较稳定的Prefork模式为多过程模式,须要常常派生子过程,所以耗费的CPU等服务器资源,要比Nginx高很多。2.内存耗费少Nginx+PHP(FastCGI)服务器,在3万并发连贯下,开启10个Nginx过程耗费150MB内存,15MB*10=150MB,开启的64个PHP-CGI过程耗费1280内存,20MB*64=1280MB,加上零碎本身耗费的内存,总共耗费不到2GB的内存。 ...

July 20, 2020 · 3 min · jiezi

Nginx配置中一个不起眼字符的巨大作用失之毫厘谬以千里

Nginx作为一个轻量级的,高性能的web服务软件,因其占有内存少,并发能力强的特点,而广受欢迎和应用。国内很多大型互联网公司也对Nginx很是青眼。像BAT(百度,阿里和腾讯),TMD(头条,美团和滴滴)等等。应用过Nginx的同学都晓得,你只须要按需要精确的更改好配置启动,那么就能够优雅的拜访它了。所以说Nginx对配置文件的很是看中呢,这就要求咱们更改配置文件时肯定要再三确认,要不然可能因为忽略而引发惨案呢? 实在案例,就因为在配置时,少些了一个字符“/”,就造成拜访不通报错,因此接到投诉。那么是怎么引起的呢?起因就是:Nginx在配置proxy_pass代理转接时,少些“/”字符造成的。 有同学就有疑难,加不加“/”,区别真的那么大吗?咱们带着这个疑难,来探索下这个问题。location目录匹配详解 nginx每个location都是一个匹配目录,nginx的策略是:拜访申请来时,会对拜访地址进行解析,从上到下一一匹配,匹配上就执行对应location大括号中的策略,并依据策略对申请作出相应。 以拜访地址:http://www.wandouduoduo.com/w...,nginx配置如下: location /wddd/  {         proxy_connect_timeout 18000; ##批改成半个小时                        proxy_send_timeout 18000;                  proxy_read_timeout 18000;                proxy_pass http://127.0.0.1:8080;     }那拜访时就会匹配这个location,从而把申请代理转发到本机的8080Tomcat服务中,Tomcat相应后,信息原路返回。总结:location如果没有“/”时,申请就能够含糊匹配以字符串结尾的所有字符串,而有“/”时,只能准确匹配字符自身。 上面举个例子阐明: 配置location /wandou能够匹配/wandoudouduo申请,也能够匹配/wandou*/duoduo等等,只有以wandou结尾的目录都能够匹配到。而location /wandou/必须准确匹配/wandou/这个目录的申请,不能匹配/wandouduoduo/或/wandou*/duoduo等申请。 proxy_pass有无“/”的四种区别探索 拜访地址都是以:http://www.wandouduoduo.com/w... 为例。申请都匹配目录/wddd/ 第一种:加"/"location  /wddd/ {  proxy_pass  http://127.0.0.1:8080/;}测试后果,申请被代理跳转到:http://127.0.0.1:8080/index.html 第二种: 不加"/"location  /wddd/ {       proxy_pass http://127.0.0.1:8080;}测试后果,申请被代理跳转到:http://127.0.0.1:8080/wddd/index.html 第三种: 减少目录加"/"location  /wddd/ {      proxy_pass http://127.0.0.1:8080/sun/;}测试后果,申请被代理跳转到:http://127.0.0.1:8080/sun/index.html 第四种:减少目录不加"/"location  /wddd/ {  proxy_pass http://127.0.0.1:8080/sun;}测试后果,申请被代理跳转到:http://127.0.0.1:8080/sunindex.html 总结 location目录后加"/",只能匹配目录,不加“/”不仅能够匹配目录还对目录进行含糊匹配。而proxy_pass无论加不加“/”,代理跳转地址都间接拼接。为了加深大家印象能够用上面的配置试验测试下: server {     listen       80;     server_name  localhost;  # http://localhost/wddd01/xxx -> http://localhost:8080/wddd01/xxx location /wddd01/ {       proxy_pass http://localhost:8080;  }  # http://localhost/wddd02/xxx -> http://localhost:8080/xxx    location /wddd02/ {        proxy_pass http://localhost:8080/;   }  # http://localhost/wddd03/xxx -> http://localhost:8080/wddd03*/xxx    location /wddd03 {            proxy_pass http://localhost:8080;   } # http://localhost/wddd04/xxx -> http://localhost:8080//xxx,请留神这里的双斜线,好好剖析一下。  location /wddd04 {   proxy_pass http://localhost:8080/;   } # http://localhost/wddd05/xxx -> http://localhost:8080/hahaxxx,请留神这里的haha和xxx之间没有斜杠,剖析一下起因。 location /wddd05/ {     proxy_pass http://localhost:8080/haha;    } # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx    location /wddd06/ {            proxy_pass http://localhost:8080/haha/;   } # http://localhost/wddd07/xxx -> http://localhost:8080/haha/xxx   location /wddd07 {         proxy_pass http://localhost:8080/haha;  }         # http://localhost/wddd08/xxx -> http://localhost:8080/haha//xxx,请留神这里的双斜杠。 location /wddd08 {        proxy_pass http://localhost:8080/haha/;  }}看到这里,是不是感觉有点区别呢??每一种配置都有它不同的意义与区别。太赞了!墙裂举荐这款网页版 Nginx 配置生成器,好用到爆! 如果本文对你有所帮忙,请点个在看与转发分享反对一波。

July 16, 2020 · 1 min · jiezi

科普Nginx-服务相关介绍

什么是Nginx 在此之前也介绍过相干的内容与装置过程,介于理论生产运维环境中应用之多,还是有必要具体理解和了解它的一些弱小的性能与个性。 Nginx作为一个轻量级的HTTP服务器,相比Apache劣势也是比拟显著的,在性能上它占用资源少,能反对更高更多的并发连贯,从而达到进步拜访效率;在性能上它是一款十分优良的代理服务器与负载平衡服务器;在装置配置上它装置,配置都比较简单 Nginx的劣势简介: 常常在运维面试中,面试官会问到,你们用什么HTTP服务器啊?为什么用它?? 1、作为WEB服务器而言,Nginx解决动态文件的效率比拟高 2、作为代理服务器而言,Nginx能够实现无缓存的反向代理减速来进步WEB站点的运行速度,进步用户拜访的体验 3、作为负载平衡服务器而言,反对的利用较多,同时也反对容错性能,自带算法进行负载平衡调度 4、性能方面而言,采纳内核poll模型,反对更多的并发连贯,官网显示最大可反对50000个并发连贯的申请响应,但占用资源很少且十分稳固 Nginx日常配置优化 1、日志切割 因为Nginx没有Apache服务的cronolog日志切割性能,所以须要进行相干优化解决,能够编写脚本来主动切割日志文件 #!/bin/shlogpath="/nginx/logpath"nginxlogs="/var/log/nginx/"mkdir -p  $logpath/$(date +%Y)mv $nginxlogs/access.log $logpath/$(date +%Y)/access_$(date +F).logmv $nginxlogs/error.log $logpath/$(date +%Y)/access_$(date +F).logkill -USR1 `cat /var/log/nginx/nginx.pid` ##通过USR1信号来管制过程,从而从新生成一个新的日志文件 nginx对过程的管制性能十分强,能够通过信号指令来管制过程,罕用信号如下 QUIT 解决完以后申请后敞开过程 HUP 从新加载配置,不会中断用户的拜访申请 USR1 用于切割日志 USR2 用于平滑降级可执行程序 最初将脚本执行命令退出到定时工作来实现主动切割日志 2、nginx中FastCGI参数优化 进步nginx环境下PHP的运行效率,能够将上面的配置退出到主配置文件中 fastcgi_cache_path /application/nginx/fastcgi_cache_levels=1:2 keys_zone=TEST:10m inactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 3011d;fastcgi_cache_valid any 1m;##应答缓存工夫 3、nginx的HTTPgzip模块配置 #查看nginx编译参数[root@centos7 ~]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.12.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013TLS SNI support enabledconfigure arguments: --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --prefix=/usr/local/nginx能够看出在编译时已加上此模块,因而只须要在配置文件里进行配置即可 ...

July 9, 2020 · 1 min · jiezi

基于Nginx的分布式限流

# 依据IP地址进行限流# 1) 第一个参数 $binary_remote_addr# binary_目标是放大内存占用,remote_addr示意通过ip地址来限流# 2) 第二个参数 zone=iplimit:20m# iplimit是一块内存区域(记录拜访频率信息),20m示意这块内存区域的大小# 3) 第三个参数 rate=1r/s# 比方rate=100r/m,示意拜访的限流频率limit_req_zone $binary_remote_addr zone=iplimit:20m rate=10r/s;# 依据服务器级别进行限流limit_req_zone $server_name zone=severlimit:10m rate=100r/s;# 基于连接数的配置limit_conn_zone $binary_remote_addr zone=perip:20m;limit_conn_zone $server_name zone=perserver:20m;server { server_name www.nginx-limit.com; location /access-limit/ { proxy_pass http://172.16.50.2:8888/; # 基于IP地址的限度 # 1) 第一个参数 zone=iplimit -> 援用limit_req_zone中的zone变量 # 2) 第二个参数 burst=2 -> 设置一个大小为2的缓冲区域,等大量申请到来 # 申请数量超过限流频率时,将其放入缓冲区域 # 3) 第三个参数 nodelay->缓冲区域满了当前返回503谬误 limit_req zone=iplimit burst=2 nodelay; # 基于服务器级别的限度 # 通常状况下,server级别的限度速率是最大的 limit_req zone=serverlimit burst=100 nodelay; # 每个server最多放弃100个连贯 limit_conn perserver 100; # 每个ip最多放弃1个连贯 limit_conn perip 1; #异常情况返回504(默认返回503) limit_req_status 504; limit_conn_status 504; }# 限度下载速度location /download/ { # 下载完100m后开始限度 limit_rate_after 100m; # 限度下载的速度 limit_rate 256k;}

July 9, 2020 · 1 min · jiezi

nginx-error-open-usrlocalvarrunnginxpid-failed

错误信息服务器重启后启动nginx报错 nginx: [error] open() “/usr/local/var/run/nginx.pid” failed (2: No such file or directory)报错起因:报错的起因是没有nginx文件夹或没有nginx.pid文件,因为每次重新启动,零碎都会主动删除文件 解决办法:在nginx的配置文件nginx.conf中批改nginx.pid的地位,能够将图中红色局部的正文勾销的。 当初pid的地位就变成了nginx目录下的logs目录中 而后在nginx目录下创立logs目录 mkdir /usr/local/nginx/logs在sbin目录下启动nginx ./nginx -c /usr/local/nginx/conf/nginx.conf就会在logs目录下主动生成pid文件

July 9, 2020 · 1 min · jiezi

nginx部署网站

因为前端工作缓和,帮忙部署下前端页面,早就听过nginx的小名,所以初步选定了nginx的计划装置nginx环境:CentOS 7.4注:本文所有命令都是在root用户下执行的,如果是普通用户,请加sudo装置很简略,间接一条命令搞定(不过yum装置的个别都不是最新版本,如果要装最新版本请自行下载安装):yum install -y nginx前提是能够连外网,如果连不了外网,能够用其余形式将安装包下载下载安装,这里就不形容了,网上有很多帖子能够参考。配置nginx如果不晓得nginx的配置文件门路,能够用如下命令查看:nginx -t[root@local]# nginx -tnginx: the configuration file etcnginxnginx.conf syntax is oknginx: configuration file etcnginxnginx.conf test is successful关上配置文件etcnginxnginx.conf批改对应的server模块内容 server { listen 8080 default_server; #listen [::]:80 default_server; server_name _; #root usrsharenginxhtml; root homefrontdist; # Load configuration files for the default server block. include etcnginxdefault.d*.conf; location { root homefrontdist; } error_page 404 404.html; location = 40x.html { } error_page 500 502 503 504 50x.html; location = 50x.html { } }次要批改点:1、端口,这个可选的,默认80,这里改为了80802、ipv6地址监听地址被正文掉了,这个随便,依据需要来3、server_name应该是对应域名,这里没有用到,没有动4、root homefrontdist;这个示意web的拜访目录,须要改为本人的web页面所在目录5、include没有改变,也没钻研其作用是啥6、location中减少了root homefrontdist;7、error_page就用了nginx默认的,没有批改改好之后保留退出启动nginx执行命令[root@local]# nginx而后拜访页面,发现报错:最开始始终认为配置有问题,又搜查了各种配置计划,发现都无法访问,最初找到了一个解决方案:[root@local homefront]# vi etcnginxnginx.conf# For more information on configuration, see:# * Official English Documentation: http:nginx.orgendocs# * Official Russian Documentation: http:nginx.orgrudocsuser nginx;是因为权限问题,我是用root用户启动的nginx,然而配置中的用户默认的是nginx,所以将其user nginx改为root即可。从新加载配置,并启动nginxnginx -s reload功败垂成。不过这都是本地拜访用,没有用平安连贯,如果要用平安连贯,须要配置证书。同时这里应用的是http 1.1,如果要应用http 2.0协定,也须要配置http2.nginx常用命令应用nginx帮忙能够查看[root@local homefront]# nginx -hnginx version: nginx1.16.1Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: usrsharenginx) -c filename : set configuration file (default: etcnginxnginx.conf) -g directives : set global directives out of configuration file罕用的:nginx -t :上文已用过,次要是测试配置文件是否有语法错误nginx -s :次要是向nginx主过程发送信号进行解决,帮忙信息外面也列出了信号名称:stop, quit, reopen, reloadnginx -s stop:强制进行Nginx服务nginx -s quit:优雅地进行Nginx服务(即解决完所有申请后再进行服务)nginx -s reopen:重启Nginxnginx -s reload:从新加载Nginx配置文件,而后以优雅的形式重启Nginx参考https:blog.csdn.netqq_3584... ...

July 8, 2020 · 1 min · jiezi

用5分钟时间说说nginx反向代理和nginx缓存那些事儿

120秒搞懂 nginx 反向代理反向代理,什么是反向代理,那么我们肯定想知道,什么是代理(正向代理) 自由的百科给我说了一堆balabala,不想看了.另送一句mmp, 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。接下来说说我的个人理解,所谓代理,其实就是帮助你访问你原本访问不到的地址,简单点说,你想访问世界上最大的p站,但是你爱国,你访问不了,怎么办,没关系,你开了个代理.让代理去给你请求你想要的东西.就像小时候,金秋时节,别人家的柿子熟了,想吃一个,够不到,怎么办?拿根棍子啊,一棍子下去,咚咚几声,地下就会爬伏几坨黄黄的东西.....这根棍子,就是你开的代理,它帮你打柿子 - 用途:1.访问原来无法访问的资源,如维基百科2.做缓存,减轻原站点的压力.加快访问速度 3.对客户端访问授权,就是先过滤一遍,比如用户权限,用户是不是vip,4.使用代理,对外隐藏用户的信息,就是你访问了p站,但是p站不知道你访问过,因为他认为是你的代理访问的他,但是你觉得真的找不到你吗?就像小时候打架,你跟老师说你没打人,是你手里的棍子打的人,老师会放过你吗?所以,还是本本分分的做人,不要总是干一些蝇营狗苟的勾当. 那么什么是反向代理呢先给一个解释:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。---------------姜大庆主编;邓荣副主编.Linux系统与网络管理:中国铁道出版社,2012.05:第282页 小虫解释 想起来钱钟书说过一句话,呃.这个时候会不会觉得小虫也会旁征博引呢.老钱说,假如你吃个鸡蛋觉得味道不错,又何必认识那个下蛋的母鸡呢?这就是反向代理的作用.你去商店买一个鸡蛋,但是你不会去鸡窝看看哪个母鸡下的这个蛋,其中,商店就是一个反向代理. - 反向代理就是你发送一个http请求,请求到达nginx服务器后,nginx通过服务器配置的反向代理,取到结果返给你,但是具体是哪台机器取到的数据,你不知道,- 你不知道,他们为何离去.....此处奉上歌词 后会无期反向代理的作用1.保证内网安全,阻止web攻击,比如,你对外就暴露一个域名 比如 https://m.acurd.com,但是你的w... api.xxx.com wiki.xxx.com2.实现负载均衡,比如 访问 host/api 通过反向代理 就会转发到 api.xxx.com去,访问host/wiki 就会转发到 wiki.xxx.com3.就是下面我们要讲的.利用反代实现页面缓存,减少对服务器端(指被代理的服务器)的请求 nginx反向代理和缓存实现反向代理简单实现我用docker启动了4个nginx服务,具体参考使用docker搭建nginx集群,实现负载均衡172.17.0.2---172.17.0.5 我现在想这样,我访问172.17.0.3/hello的时候,走172.17.0.4 先大概看一下两台机器[root@localhost ~]# curl 172.17.0.38081[root@localhost ~]# curl 172.17.0.3/hello.html<html><head><title>404 Not Found</title></head><body><center><h1>404 Not Found</h1></center><hr><center>nginx/1.19.0</center></body></html>[root@localhost ~]# curl 172.17.0.48082[root@localhost ~]# 配置8081机器,这里提一句,我记得之前代理css的时候出现过问题,就是有的代理走不到下面就被代理了.所以可以把需要代理的放到前面,防止被其他规则代理[root@localhost ~]# cat conf1/conf.d/default.conf server { listen 80; server_name localhost; location /hello.html { proxy_pass http://172.17.0.4; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root /usr/share/nginx/html; index index.html index.htm; } }[root@localhost ~]# 重启8081服务器[root@localhost ~]# docker exec -it nginx8081 bashroot@ffe603d426f2:/# service nginx restart[....] Restarting nginx: nginx[root@localhost ~]# 看效果[root@localhost ~]# curl 172.17.0.38081[root@localhost ~]# curl 172.17.0.48082[root@localhost ~]# curl 172.17.0.3/hello.htmlhello[root@localhost ~]# curl 172.17.0.4/hello.htmlhello[root@localhost ~]# 一个简单的反代做完了.写到这里我有一个想法,如果代理的是/a/b/c/d/hello,那么实际请求的应该是什么呢?能动手不逼逼修改一下8081的nginx配置文件[root@localhost ~]# cat conf1/conf.d/default.conf server { listen 80; server_name localhost; location /hello.html { proxy_pass http://172.17.0.4; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /a/b/c/d/hello { proxy_pass http://172.17.0.4; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root /usr/share/nginx/html; index index.html index.htm; } }重启服务器,查看docker日志输出[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1a4fc8f64447 nginx "/docker-entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:8083->80/tcp nginx808356dcd4def721 nginx "/docker-entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:8082->80/tcp nginx8082ffe603d426f2 nginx "/docker-entrypoint.…" 4 hours ago Up 42 minutes 0.0.0.0:8081->80/tcp nginx808172aacbe3c63a nginx "/docker-entrypoint.…" 4 hours ago Up 3 hours 0.0.0.0:8080->80/tcp nginx80802a7229a5ef30 hello-world "/hello" 7 hours ago Exited (0) 7 hours ago dreamy_hamilton54368a05aabf hello-world "/hello" 7 hours ago Exited (0) 7 hours ago mystifying_hawking# 查看被代理的服务器日志[root@localhost ~]# docker logs -f 56dcd4def721172.17.0.1 - - [02/Jul/2020:18:20:34 +0000] "GET /hello.html HTTP/1.1" 200 6 "-" "curl/7.29.0" "-"2020/07/02 18:20:49 [error] 21#21: *32 open() "/usr/share/nginx/html/a/b/c/d/hello" failed (2: No such file or directory), client: 172.17.0.3, server: localhost, request: "GET /a/b/c/d/hello HTTP/1.0", host: "172.17.0.4"说明反代的时候并不会截取你的任何请求,而是完整的把 host后面的东西一股脑全给转了过来但是像下面这种代理,不会全部把参数转过去的,而是只传代理地址后面的 location /static/admin { # return 503; alias /opt/app/public/static/admin; #proxy_pass http://127.0.0.1:8086/static/; }相信你一定可以看明白的 ...

July 6, 2020 · 3 min · jiezi

Nginx学习笔记

一、Nginx简介与安装1、Nginx简介Nginx是一个高性能WEB服务器,除此之外还有Apache、Tomcat、Jetty、IIS等,Nginx相对于其他服务器的优势有以下几点: Nginx与语言无关Nginx可以在Windows、Mac和Linux发行版上部署Nginx事实上已经成为业界使用最多的WEB服务器,Apache由于发展时间长,用户依然众多,但Nginx的增长速度更快2、编译与安装安装环境准备Liux内核要求在2.6以上,Linux2.6以上支持epoll,在2.6之前使用的是select或pool多路复用I/O模型,无法解决高并发问题,可以使用uname -a查看Linux内核版本。gcc编译器pcre库,PCRE是支持正则表达式的函数库,目前使用广泛。zlib库,用于压缩和解压。OpenSSL开发库,用于支持https协议以上五个软件包可以使用如下命令在CentOS上安装: yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel源码获取nginx下载 wget https://nginx.org/download/nginx-1.19.0.tar.gztar xf nginx-1.19.0.tar.gz简单安装./configuremake & make install执行完成之后nginx就会被安装到/usr/local/nginx 基于参数构建./configure --prefix=/usr/local/nginx --with-http_sub_status_module --with-http_ssl_module --with-debug控制命令# 默认方式启动./sbin/nginx# 指定配置文件启动nginx./sbin/nginx -c nginx.conf# 指定nginx程序目录启动./sbin/nginx -p /usr/local/nginx# 快速停止./sbin/nginx -s stop# 优雅停止./sbin/nginx -s quit# 热装载配置文件./sbin/nginx -s reload# 重新打开日志文件./sbin/nginx -s reopen# 测试配置文件是否有语法错误./sbin/nginx -t nginx.conf二、 Nginx特点nginx启动时,会生成两种类型的进程,一个是Master进程,一个或者多个Worker进程。主进程并不处理网络请求,主要负责调度worker进程(包括加载配置、启动Worker进程和非停机升级);服务器实际处理网络请求及响应的是Worker进程,在类Unix系统上,nginx可以配置多个Worker进程,而每个Worker进程都可以同时处理数以千计的网络请求;模块化设计,nginx的Worker进程包含核心和功能性模块,核心模块负责维持一个run-loop,执行网络请求处理的不同阶段的模块功能,如网络读写,存储读写、内容传递、过滤,以及将请求发往后端服务器等,而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特殊功能的服务;事件驱动、异步非阻塞,可以说是nginx能支持高并发、高性能的关键因素,同时也得益于对Linux的kqueue、epoll和事件机制。三、Nginx配置与使用1、配置文件语法与格式例子 worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.zjwblog.cn; location / { root html; index index.html index.htm; } location /nginx_status { stub_status on; access_log off; } }}events、http、server、location、upstream为配置项块,而worker_processes、worker_connections、include、listen为配置项。nginx_status属于配置块的特定参数,其中server块嵌套于http块,其可以直接继承访问http块当中的参数。 ...

July 1, 2020 · 2 min · jiezi

太赞了墙裂推荐这款网页版-Nginx-配置生成器好用到爆

之前民工哥也给大家介绍过一款Nginx配置生成器:强大!Nginx 配置在线一键生成“神器”,不太了解的人可以去看一看。 最近民工哥又发现一款好用的网页版开源工具,同样它的功能也是Nginx配置生成器,功能非常强大,方便实用,它是:NginxWebUI。 NginxWebUI介绍 NginxWebUI是一款方便实用的nginx 网页配置工具,可以使用 WebUI 配置 Nginx 的各项功能,包括端口转发,反向代理,ssl 证书配置,负载均衡等,最终生成「nginx.conf」配置文件并覆盖目标配置文件,完成 nginx 的功能配置。 项目地址:https://gitee.com/cym1102/ngi...官方网站:https://nginxwebui.gitee.ioNginxWebUI功能说明该项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库。本项目可管理多个nginx服务器集群, 随时一键切换到对应服务器上进行nginx配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理。nginx本身功能复杂, 本项目并不能涵盖nginx所有功能, 只能配置常用功能, 更高级的功能配置仍然需要在最终生成的nginx.conf中进行手动编写。部署此项目后, 配置nginx再也不用上网各种搜索, 再也不用手动申请和配置ssl证书, 只需要在本项目中进行增删改查就可方便的配置nginx。NginxWebUI安装它有两种安装方式: 一种是jar包运行方式一种是 Docker运行方式1、jar包运行方式 首先需要安装JDK和Nginx环境,这里不再赘述了,有兴趣的可以看看前面的文章。 下载jar包 wget https://craccd.oss-cn-beijing.aliyuncs.com/nginxWebUI-1.3.5.jar启动程序 nohup java -jar -Xmx64m nginxWebUI-1.3.5.jar --server.port=8080 ----project.home=/home/nginxWebUI/ &启动参数说明: -Xmx64m 最大分配内存数--server.port 占用端口, 默认以8080端口启动--project.home 项目配置文件目录,存放数据库文件,证书文件,日志等, 默认为/home/nginxWebUI/注意命令最后加一个&号, 表示项目后台运行 2、Docker运行方式 本项目制作了docker镜像, 同时包含nginx和nginxWebUI在内, 一体化管理与运行nginx. 首先安装docker运行环境,之前公众号有文章介绍,可以去搜索查阅一下。 下载整体镜像文件: docker pull registry.cn-hangzhou.aliyuncs.com/cym1102/nginxwebui:1.3.5启动容器: docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--变量名=变量值 --变量名2=变量值2" --privileged=true --net=host registry.cn-hangzhou.aliyuncs.com/cym1102/nginxwebui:1.3.5 /bin/bash参数说明: 启动容器时请使用--net=host参数, 直接映射本机端口, 因为内部nginx可能使用任意一个端口, 所以必须映射本机所有端口.容器需要映射路径/home/nginxWebUI:/home/nginxWebUI, 此路径下存放项目所有数据文件, 包括数据库, nginx配置文件, 日志, 证书等, 升级镜像时, 此目录可保证项目数据不丢失. 请注意备份.-e BOOT_OPTIONS 参数可填充java启动参数, jar安装教程中的参数均可使用, 可以靠此项参数修改端口号等日志默认存放在/home/nginxWebUI/log/nginxWebUI.log安装完成,启动之后,就要以通过WEB网页来访问这个项目了。 ...

July 1, 2020 · 1 min · jiezi

小白建站系列之宝塔面板安装WordPress个人网站图文教程

下面稍微介绍一下如何使用阿里云服务器安装宝塔面板。 一、准备阿里云的云服务器,即 阿里云ECS,默认的用户名 root,密码的话可以修改。 远程连接云服务器使用 ssh 软件工具,使用的是公网ip。 注意事项:出于性能考虑,服务器的操作系统一定要选Linux版本(centos或者ubuntu),不要选Window。 主要步骤:拥有一台云服务器》ssh工具连接云服务器》安装宝塔面板》配置云服务器安全组(放行端口)》宝塔面板在线访问成功二、安装面板1、使用ssh工具连接云服务器windows下可以使用XShell,macOs的可以使用终端。 因为SSH工具有很多种,找到自己用的舒服的工具就可以,不用纠结使用哪一种。我自己是用的FinalShell这一款SSH工具来进行Linux远程连接的,如何认为不安全的话,也可以继续用Xshell,只是需要激活码,如下图 2、输入宝塔面板安装命令温馨提示:宝塔面板最近升级到了7.0版本,Centos7以上的系统建议安装宝塔面板最新版:https://www.bt.cn/bbs/thread-19376-1-1.html(宝塔面板7.x版本,点击查看安装命令)https://www.bt.cn/bbs/thread-30562-1-1.html(宝塔面板6.x版本,点击查看安装命令)安装方法这里也有介绍(以宝塔面板5.x版本举例):http://www.bt.cn/bbs/thread-1... 以下安装命令是宝塔面板5.x版本的,请注意。如果安装出错了,就去安装宝塔面板7.x版本Centos安装脚本: yum install -y wget && wget -O install.sh http://download.bt.cn/install... && sh install.shUbuntu/Deepin安装脚本: wget -O install.sh http://download.bt.cn/install... && sudo bash install.shDebian安装脚本: wget -O install.sh http://download.bt.cn/install... && bash install.shFedora安装脚本: wget -O install.sh http://download.bt.cn/install... && bash install.sh前两者偏多。根据操作系统输入不同的安装命令,然后回车 此间不需要任何操作。 3、宝塔面板安装成功稍等一分钟(有时候网速差可能久一点),然后不要关闭窗口 最终可以看到如下界面 这里会显示宝塔后台地址和账号密码,可以手动复制到记事本暂时存起来。 三、配置安全组如果你已经会设置安全组的话,就可以省略这一步,直接浏览器访问宝塔面板 访问地址:http://云服务器公网IP地址:8888/上面的黄色的字也说了,如果不能访问面板,请在安全组中放行端口。 因为刚装的系统,自然也没有放行8888端口,面板后台无法打开 下面我们添加安全组 1、进入云服务器管理后台进入服务器(实例)主页,点击右边的查看更多,点击安全组配置。 2、然后可以看到一条安全组点击配置规则(如果没有就新建一条安全组) 3、点击快速创建规则 4、可以看到如下页面 常用端口可以勾选,相当于多选。也可以自定义端口,比如我们要将8888和888添加进去。 授权对象像之前已经填的 0.0.0.0/0 一样。 ...

June 28, 2020 · 1 min · jiezi

运维监控工具排名前10名介绍

Zabbix官方网站:https://www.zabbix.com/ 推荐星级:★★★★★Zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网用户中使用最广的监控软件,云智慧遇到的85%以上用户在使用Zabbix做监控解决方案。   WGCLOUD官方网站:http://www.wgstart.com/ 推荐星级:★★★★★国人开源的新锐监控工具,轻量高并发,一出来就火爆异常。server采用springboot微服务架构开发,跨平台,单节点可支持500+主机监控。核心监控组件:服务器集群监控,ES集群监控,CPU监控,内存监控,数据监控(mysql,oracle,pg等),服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。 优点: 中文开源软件,界面很绚丽很友好,对业务数据变化感知很好,可以sql统计数据变化。缺点:目前最新版本不开源了,但依然免费,开源版本还在继续维护中,可以理解作者也要吃饭哈。但是免费版对个人和小团队足够用了,不用担心。 Nagios官方网站:https://www.nagios.org/ 推荐星级:★★★★☆ Nagios是一款开源的企业级监控系统,能够实现对系统CPU、磁盘、网络等方面参数的基本系统监控,以及 SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过安装插件和编写监控脚本,用户可以实现应用监控,并针对大量的监控主机和多个对象 部署层次化监控架构。 Nagios最大的特点是其强大的管理中心,尽管其功能是监控服务和主机的,但Nagios自身并不包括这部分功能代码,所有的监控、告警功能都是由相关插件完成的。 用户群:适合复杂IT环境的企业  Ganglia官方网站:http://ganglia.info/ 推荐星级:★★★★☆ Ganglia是加州大学伯克利分校发起的一个开源集群监控项目,设计之初是用于监控数以千计的网络节点。Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统。它已被广泛移植到各种操作系统和处理器架构上。 image_1bnnji6etu471k52m9he72ld513.png-726.2kB 用户群:适用于大型服务器集群用户。  Grafana推荐星级:★★☆☆☆官方网站:http://grafana.org/ Grafana可以用在任何需要数据可视化的地方,如果有一天老板需要你做一份漂亮的业务数据图表,你无需头疼用什么绘图库去开发,你要做的仅仅是将业务数据稍作加工存入Grafana支持的DataSource,点几下鼠标即可配制出一份完美的数据图表。 因为这款工具只可以绘图,我们可以通过influxdb监控,Prometheus采集的主机信息!  Zenoss推荐星级:★★★★☆ Zenoss Core是Zenoss的开源版本,其商用版本为ZenossEnterprise。作为企业级智能监控软件,Zenoss Core允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度。Zenoss Core的强大能力来自于深入的列表与配置管理数据库,以发现和管理公司IT环境的各类资产。Zenoss同时提供与CMDB关联的事件和错误管理系统, 以协助提高各类事件和提醒的管理效率。  Open-falcon推荐星级:★★★☆☆ Open-falcon是小米运维团队从互联网公司的需求出发,根据多年的运维经验,结合SRE、SA、DEVS的使用经验和反馈,开发的一套面向互联网的企业级开源监控产品。   Cacti推荐星级:★★★☆☆ 官方网站:http://www.cacti.net 提示: 近几年cacti和nagios已经基本被zabbix代替   天兔开源监控(只适用于mysql、redis、oracle)推荐星级:★★☆☆☆ 官方网站:http://www.lepus.cc/ 简洁、直观、强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库监控更简单 优点: 中文开源软件,里面监控mysql和redis可以精确到sql语句缺点: 因为只有监控数据库和非关系数据库,监控项不能统一,不能结合其他监控平台————————————————版权声明:本文为CSDN博主「tianshiyeben」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/tianshi...

June 24, 2020 · 1 min · jiezi

葵花宝典一文搞定-Nginx-限流配置

_来源:https://www.cnblogs.com/bigli... 作者:biglittleant_1、限流算法令牌桶算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;请求要消耗等比例的令牌才能被处理;令牌不够时,请求被缓存。漏桶算法 漏桶算法 算法思想是: 水(请求)从上方倒入水桶,从水桶下方流出(被处理);来不及流出的水存在水桶中(缓冲),以固定速率流出;水桶满后水溢出(丢弃)。这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。  相比漏桶算法,令牌桶算法不同之处在于它不但有一只“桶”,还有个队列,这个桶是用来存放令牌的,队列才是用来存放请求的。从作用上来说,漏桶和令牌桶算法最明显的区别就是是否允许突发流量(burst)的处理,漏桶算法能够强行限制数据的实时传输(处理)速率,对突发流量不做额外处理;而令牌桶算法能够在限制数据的平均传输速率的同时允许某种程度的突发传输。 Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值。 Nginx官方版本限制IP的连接和并发分别有两个模块: limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"。limit_req_conn 用来限制同一时间连接数,即并发限制。limit_req_zone 参数配置    Syntax:    limit_req zone=name [burst=number] [nodelay];     Default:    —     Context:    http, server, locationlimit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。第二个参数:zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息。第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。limit_req zone=one burst=5 nodelay; 第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队。例子:     http {         limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server {             location /search/ {             limit_req zone=one burst=5 nodelay;        }    }        下面配置可以限制特定UA(比如搜索引擎)的访问: limit_req_zone $anti_spider zone=one:10m rate=10r/s; limit_req zone=one burst=100 nodelay; if ($http_user_agent ~* "googlebot|bingbot|Feedfetcher-Google") { set $anti_spider $http_user_agent; }其他参数 Syntax:    limit_req_log_level info | notice | warn | error;     Default:         limit_req_log_level error;     Context:    http, server, location当服务器由于limit被限速或缓存时,配置写入日志。延迟的记录比拒绝的记录低一个级别。例子:limit_req_log_level notice 延迟的的基本是info。     Syntax:    limit_req_status code;     Default:        limit_req_status 503;     Context:    http, server, location设置拒绝请求的返回值。值只能设置 400 到 599 之间。 ...

June 23, 2020 · 1 min · jiezi

Nginx-如何自定义变量

之前的两篇文章 Nginx 变量介绍以及利用 Nginx 变量做防盗链 讲的是 Nginx 有哪些变量以及一个常见的应用。那么如此灵活的 Nginx 怎么能不支持自定义变量呢,今天的文章就来说一下自定义变量的几个模块以及 Nginx 的 keepalive 特性。 通过映射新变量提供更多的可能性:map 模块功能:基于已有变量,使用类似 switch {case: … default: …} 的语法创建新变量,为其他基于变量值实现功能的模块提供更多的可能性模块:ngx_http_map_module 默认编译进 Nginx,通过 --without-http_map_module 禁用指令Syntax: map string $variable { ... }Default: —Context: httpSyntax: map_hash_bucket_size size;Default: map_hash_bucket_size 32|64|128; Context: httpSyntax: map_hash_max_size size;Default: map_hash_max_size 2048; Context: http我们主要看一下 map string $variable { ... } 这个指令。所谓类似 switch case 的语法是指,string 的值可以有多个,可以根据 string 值的不同,来给 $variable 赋不同的值。 规则已有变量:string 需要是已有的变量,可以分为下面这三种情况 字符串一个或者多个变量变量与字符串的组合case 规则:{...} 内的匹配规则需要遵循以下规则,尤其是要注意当使用 hostnames 指令时,与 server name 的匹配规则是一致的,可以看之前的文章 Nginx 的配置指令 ...

June 21, 2020 · 3 min · jiezi

NGINX-之父再次被起诉索赔金额升至75亿美元

技术编辑:宗恩丨发自 SiFou Office SegmentFault 思否报道丨公众号:SegmentFault 去年12月,俄罗斯警方搜查了商业服务器公司 NGINX,并当场带走了两位联合创始人,其中一位是 NGINX 之父 Igor Sysoev。两人被捕的原因是前东家 Rambler 集团提出了侵权指控。 不过在被捕后因为证据不足两位创始人很快被释放,但在被捕期间两人受到了警方「严厉」的审讯。事后他们评论称「此次事件是Rambler领导层的一次勒索」。 此后 Rambler 方面表示将放弃对 NGINX 公司的刑事诉讼,但后续将继续在民事法庭上对 NGINX 源代码提出关于所有权的要求。 事件起因是 Igor Sysoev 作为员工供职于 Rambler 期间,利用业余时间开发了开源 Web 服务器软件 NGINX 。2011年,Sysoev 及其合作伙伴离开莫斯科前往旧金山、筹资创办了商业公司 NGINX,并最终以 6.7 亿美元的价格出售给了 F5 Networks。 Rambler 果然说到做到,当地时间 2020 年 6 月 8 日 Rambler 再次提起诉讼,这次的理由是 「NGINX 的开发耗用了 Rambler 的资源,使用了 Rambler 的设备、基础设施、资源和人才。其中包括作为『免费软件测试台』而处理的大规模互联网流量。」并且在进行开发的多年期间,NGINX 的几位开发者刻意隐藏开发 NGINX 的信息,以免被 Rambler 的高级管理层发现 Rambler 这次不仅起诉 Igor Sysoev、前首席技术官 Maxim Konavalov ,还起诉 F5 Networks 以及为他们俩出资开公司的两家风险投资公司 Runa Capital 和 E.venture Capital Partners,并声称他们共同密谋窃取其知识产权,他们应该赔偿自己 7.5 亿美元的赔偿。 ...

June 20, 2020 · 1 min · jiezi

Nginx-配置太复杂这个开源项目让你在Web中就搞定

项目名称:nginxWebUI 项目作者:陈钇蒙 开源许可协议:MulanPSL-2.0 项目地址:https://gitee.com/cym1102/nginxWebUI 功能说明本项目可以使用WebUI配置nginx的各项功能,包括http协议转发,tcp协议转发,反向代理, 负载均衡,ssl证书自动申请、续签、配置等,最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置。 本项目可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理。 nginx本身功能复杂,本项目并不能涵盖nginx所有功能,只能配置常用功能,更高级的功能配置仍然需要在最终生成的nginx.conf中进行手动编写。 部署此项目后, 配置nginx再也不用上网各种搜索,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置nginx。 技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库。 使用说明 登录页面, 第一次打开会要求初始化管理员账号。 进入系统后, 可在管理员管理里面添加修改管理员账号。 在http参数配置中可以配置nginx的http项目,进行http转发。 在TCP参数配置中可以配置nginx的steam项目参数,进行tcp转发。 在反向代理中可配置nginx的反向代理即server项功能,可开启ssl功能,可以直接从网页上上传pem文件和key文件,或者使用系统内申请的证书,可以直接开启http转跳https功能,也可开启http2协议。 在负载均衡中可配置nginx的负载均衡即upstream项功能,,在反向代理管理中可选择代理目标为配置好的负载均衡。 在html静态文件上传中可直接上传html压缩包到指定路径,上传后可直接在反向代理中使用,省去在Linux中上传html文件的步骤。 在证书管理中可添加证书,并进行签发和续签,开启定时续签后,系统会自动续签即将过期的证书。 最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行校验和重启,可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下。 log管理,在http配置中如果开启了log监控的话,会每天在这里生成日志分析报告。 远程服务器管理,如果有多台nginx服务器,可以都部署上nginxWebUI,然后登录其中一台, 在远程管理中添加其他服务器的ip和用户名密码,就可以在一台机器上管理所有的nginx服务器了。 此外,项目还提供了一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中。 如果你想要了解更详细的安装步骤和使用方法,那就点击后面的链接去项目主页看看吧:https://gitee.com/cym1102/nginxWebUI

June 17, 2020 · 1 min · jiezi

Nginx16连环问你被问住了吗

作为一个后端程序员,Nginx也是必备技能之一哦,作为一个web服务器,Nginx的性能方面是很不错的。本文总结或16个知识点,或者面试题分享给大家,后续还会继续更新⛽️。1.什么是nginx?Nginx是一个高性能的HTTP和反向代理服务器。同时也是一个 IMAP/POP3/SMTP 代理服务器。 官方网站:http://nginx.org。 2.nginx主要特征?处理静态文件,索引文件以及自动索引;打开文件描述符缓冲. 无缓存的反向代理加速,简单的负载均衡和容错. FastCGI,简单的负载均衡和容错.模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行 运行,而不需要相互等待。 支持 SSL 和 TLSSNI. Nginx 它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。 Nginx 具有很高的稳定性。 例如当前 apache 一旦上到 200 个以上进程,web 响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。nginx 官方表示保持 10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的攻击对 nginx 来说基本上是毫无用处的。 Nginx 支持热部署。它的启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运 行数个月也不需要重新启动。对软件版本进行进行热升级。 Nginx 采用 master-slave 模型,能够充分利用 SMP 的优势,且能够减少工作进程在磁 盘 I/O 的阻塞延迟。当采用 select()/poll()调用时,还可以限制每个进程的连接数。 Nginx 代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易。特别值得一提的是强大的 Upstream 与 Filter 链。 ...

June 8, 2020 · 2 min · jiezi

nginx安装及部署

nginx安装1.前置安装 sudo yum install yum-utils2.在服务器上根目录创建一个/etc/yum.repos.d/nginx.repo文件,编辑如下: [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true3. sudo yum install nginx这样我们就完成了nginx的安装,这三步官网要求的,没有为什么;以这样的方式我们安装nginx的配置在/etc/nginx/default.conf中配置 2.nginx配置我们刚生成的nginx默认配置如下 user nginx; //默认用户worker_processes 1;//cpu内核error_log /var/log/nginx/error.log warn;//打印错误日志路径pid /var/run/nginx.pid;//nginx运行启动后就会生成这个标示文件,记录 nginx主进程的 ID 号。events {//设置最大连接数 worker_connections 1024;}http { include /etc/nginx/mime.types; //设置各种类型 default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';//打印日志的方式,$符标识变量 access_log /var/log/nginx/access.log main;//打印访问日志 sendfile on;//指定是否使用sendfile系统调用来传输文件。 sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝 keepalive_timeout 65;//默认连接时间 include /etc/nginx/conf.d/*.conf;//默认配置都包含在.conf文件中}上面的最后一行我们也清楚了,那么我们看一看默认配置的详细注解: ...

June 8, 2020 · 1 min · jiezi

Nginx学习笔记二反向代理

反向代理实例一 实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到127.0.0.1:8080 1.分析2.修改host3.修改ngixn配置文件 反向代理实例二 使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001访问 http://192.168.17.129:9001/edu/ 直接跳转到 127.0.0.1:8080 访问 http:// 192.168.17.129:9001/vod/直接跳转到127.0.0.1:8081 修改ngixn配置文件

June 6, 2020 · 1 min · jiezi

使用Nginx防止IP地址被恶意解析

使用Nginx的目的使用阿里云ECS云服务器,首先聊聊笔者使用Nginx的背景。 初始化ECS后会生成一个公网IP,默认访问IP地址自动访问80端口,此时通过ip地址可直接访问启动在80端口的服务。 如再把域名解析到当前ip,即可通过域名直接访问80端口的服务。 然后,出现了一个问题:任何人都可以将域名解析到ip地址,也就是说,通过其他域名也可以访问到自己ECS上的服务。至于目的,这种攻击手段未免太光明正大了,应该是想养域名然后售卖(猜测,脑洞够大的大大交流一下)。 避免这种攻击的方式有很多种,参考网上的答案,配置Nginx是最方便快捷的。 大致思路如下,web端服务以非80端口启动(无法直接通过IP地址访问到),Nginx配置一层正向代理,将域名转发到域名+端口。 结果:解析后使用自己的域名可以直接访问,本质上是转发到了ip地址+端口。而其他域名没有配置端口转发,所以会被拦截下来。 使用Nginx的场景有很多,反向代理,负载均衡等等,防止恶意解析只是其中一种。 也许未来或扩展更多Nginx相关的技术经验,但是代码只是一种工具,技术只有在解决了真正的问题才会产生价值,不然就如同纸上谈兵,毫无意义。 之前看到过一篇文章,讲的是两个开发者在讨论技术选择,其中一个人选择了冷门的Lua,另一个人表示不解,为什么不选择热门的技术,更好的性能,更好的开发体验。然而,她的回答是:能解决我们的问题就行了。 我陷入了深思,2019掀起的微服务架构浪潮我也跟了一把,学习了很多新的技术,名词,感觉盆满钵满。然而很难有机会将其运用到实际的项目开发中,高并发,微服务到底是一种技术,还是一种炫耀的资本,解决的是项目中的实际问题还是就业问题。学习无罪,但在学习前我会思考,我会使用它,还是被它所束缚。 就哔哔这么多,以下是在Linux环境下Nginx的常用命令和我复制下来的配置文件(nginx.conf) 常用命令列表yum install nginx //安装nginx(centos)//开机自启systemctl enable nginxsystemctl disable nginx//查看nginx状态systemctl status nginx//启动,停止,重启systemctl start nginxsystemctl stop nginxsystemctl restart nginx//重新加载配置systemctl reload nginx//配置文件的默认位置/etc/nginx 主配置文件nginx.conf防止恶意解析配置 server { listen 80 default_server; server_name _; access_log off; return 444; }# For more information on configuration, see:# * Official English Documentation: http://nginx.org/en/docs/# * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.include /usr/share/nginx/modules/*.conf;events { worker_connections 1024;}http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; server_name _; access_log off; return 444; } server { listen 80; server_name www.zkrun.top; location / { proxy_pass http://www.zkrun.top:8080; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }# Settings for a TLS enabled server.## server {# listen 443 ssl http2 default_server;# listen [::]:443 ssl http2 default_server;# server_name _;# root /usr/share/nginx/html;## ssl_certificate "/etc/pki/nginx/server.crt";# ssl_certificate_key "/etc/pki/nginx/private/server.key";# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 10m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;## # Load configuration files for the default server block.# include /etc/nginx/default.d/*.conf;## location / {# }## error_page 404 /404.html;# location = /40x.html {# }## error_page 500 502 503 504 /50x.html;# location = /50x.html {# }# }}

June 5, 2020 · 2 min · jiezi

nginx-nginx安装及常用配置详解

nginx | nginx安装及常用配置详解 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 在高连接并发的情况下,Nginx是Apache服务器不错的替代品。 Nginx 安装系统平台:CentOS release 6.6 (Final) 64位。 一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。 1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.... [root@bogon src]# cd /usr/local/src/[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 2、解压安装包: [root@bogon src]# tar zxvf pcre-8.35.tar.gz3、进入安装包目录 [root@bogon src]# cd pcre-8.354、编译安装 [root@bogon pcre-8.35]# ./configure[root@bogon pcre-8.35]# make && make install5、查看pcre版本 [root@bogon pcre-8.35]# pcre-config --version ...

June 4, 2020 · 3 min · jiezi

Nginx状态监控及日志分析

【转载请注明出处】:https://segmentfault.com/a/1190000022808115 1、Nginx状态监控Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。使用nginx -V 2>&1 | grep -o with-http_stub_status_module命令检测当前Nginx是否有status功能,如果输出ngx_http_stub_status_module则说明是有的,如果没有可以在编译时加上此模块。默认情况下,status是关闭的,我们需要开启,并指定uri来访问数据。 server { listen 80; server_name default_server; location /status { stub_status on; allow 114.247.125.227; }}allow配置只允许指定的Ip才能访问nginx status功能,去掉就是不限制。重启Nginx之后,浏览器访问http://{IP}/status查看状态监控信息 Active connections:当前的客户端活动连接数(包含正在等待的客户端连接),相当于TCP连接状态处于Established和SYN_ACKaccepts: 已接受的客户端连接总数,即已被worker进程接收的连接handled: 已被处理的连接总数requests: 客户端的http请求总数Reading: 当前正在读取的http请求数(读取到http请求首部)Writing: 当前准备响应的连接数(写入到http响应首部)Waiting: 当前处于等待的空闲客户端请求数, 等待的时间为Reading和Writing之间的间隔采集到Nginx数据之后就可以用监控工具给监控起来了。 2、日志分析Nginx默认的日志格式配置可以在/etc/nginx/nginx.conf中找到 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';打印的日志实例 39.105.66.117 - mp [11/Sep/2019:19:03:01 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.040 0.04039.105.66.117 - mp [11/Sep/2019:19:03:08 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.008 0.008$remote_addr: 客户端的ip地址$remote_user: 用于记录远程客户端的用户名称$time_local: 用于记录访问时间和时区$request: 用于记录请求的url以及请求方法$status: 响应状态码$body_bytes_sent: 给客户端发送的文件主体内容字节数$http_referer: 可以记录用户是从哪个链接访问过来的$http_user_agent: 用户所使用的浏览器信息$http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址**$request_time**: 指的是从接受用户请求的第一个字节到发送完响应数据的时间,即\$request_time包括接收客户端请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间$upstream_response_time: 用于接收来自上游服务器的响应的时间常用分析命令1、根据访问IP统计UV ...

June 1, 2020 · 2 min · jiezi

nginx学习01安装

nginx安装: stable: [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/cen...$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_... module_hotfixes=truecd /etc/yum.repos.d/vim nginx.repo拷贝上面内容:$releasever->7检查: yum list|grep nginxyum install nginx[root@niewj yum.repos.d]# nginx -v nginx version: nginx/1.18.0[root@niewj yum.repos.d]# ng ngettext nginx nginx-debug[root@niewj yum.repos.d]# ps -ef|grep nginx root 8133 1 0 13:13 ? 00:00:00 nginx: master process nginx nginx 8134 8133 0 13:13 ? 00:00:00 nginx: worker process root 8143 7996 0 13:14 pts/0 00:00:00 grep --color=auto nginx[root@niewj yum.repos.d]# nginx -Vnginx version: nginx/1.18.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabledconfigure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' ...

June 1, 2020 · 1 min · jiezi

修改nginx默认指向目录

环境是ubuntu16nginx是1.10.3这里我先修改的是nginx.conf这个文件,但是没效果 于是我又去看了下配置,发现修改 /deafult好像有默认目录这个配合,于是修改,重启,发现成功了。

May 29, 2020 · 1 min · jiezi

php编译安装报错make-sapicliphp-Error-1-解决办法

php编译安装报错:make: *** [sapi/cli/php] Error 1 时怎么办?ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor’: /ext/iconv/iconv.c:2491: undefined reference to `libiconv_open’ collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1 解决方法:[17:51:36 root@a7 ~]#vim Makefile 添加:-liconv 更多文章详见:http://www.magedu.com/xwzx/li...

May 28, 2020 · 1 min · jiezi

Mac重启nginx报错-failed-2-No-such-file-or-directory

由于重启nginx导致nginx.pid文件丢失,我上网搜了很多解决方法,但实际上只有第一步用到了,并且千万要注意一点每个人用的系统都不一样,nginx的安装路径也会有些区别,就比如nginx.conf这个文件的存放路径网上搜出来的是/usr/local/nginx/nginx.conf,但是我的是/usr/local/etc/nginx/nginx.conf。我的解决方法:第一步都是将nginx.conf文件里的#pid logs/nginx.pid这句话中的“#”删掉;第二步是在报错的目录下(/usr/local/Cellar/nginx/1.17.6/)新建logs文件夹,一开始我不知道logs文件建在哪个目录下,只是根据网上解决方法里贴出来的图片将logs文件夹与nginx.conf文件平级:/usr/local/etc/nginx/logs,最后才发现不应该建在这个路径下,而是将log新建在报错提示的路径下;最后一步就在logs文件夹下新建nginx.pid文件,执行nginx -s reload,你就会发现nginx命令能用了,也不会再报错了。网上搜出来的方法都是先nginx -s reload,接着执行nginx -c /usr/local/etc/nginx/nginx.conf等等各种各样的生成nginx.pid文件的命令,但是我nginx这个命令都用不了,更别说执行nginx -s reload和nginx -c /usr/local/etc/nginx/nginx.conf了,只会报没有发现这个命令,无奈之下我只能在logs目录下输入命令touch nginx.pid,然后执行nginx -s reload发现nginx命令居然能用了!

May 27, 2020 · 1 min · jiezi

nginx配置ssl

https://www.cnblogs.com/ghjbk...

May 27, 2020 · 1 min · jiezi