关于nginx:nginxnuxt部署项目后老网址怎么设置重定向

我这边有个我的项目,n年前用php html混编做的,当初用前后端拆散的模式,前端nuxt, 后端php laravel框架前端部署nginx转发http申请到nuxt 3000 端口相干配置: location / { proxy_pass http://localhost:3000; }我的项目可失常运作; 起初发现旧网站有一些旧链接须要重定向到新站的链接,比方:旧站的 /news-233.html 页面, 须要重定向到 新站的 /news/233 页面,请问应该如何配置?是在nginx中配置,还是在nuxt中配置?求牢靠示例

August 24, 2022 · 1 min · jiezi

关于nginx:解决-NGINX-LDAP-参考实施中的安全问题

原文作者:Liam Crilly of F5 和 Timo Stark of F5原文链接:解决 NGINX LDAP 参考施行中的平安问题转载起源:NGINX 官方网站 2022 年 4 月 9 日,NGINX LDAP 参考施行中曝出了多个安全漏洞。经确认,只有参考施行受到了影响。NGINX 开源版和 NGINX Plus 自身未受影响,如果您不应用参考施行,则无需采取纠正措施。 NGINX LDAP 参考施行应用轻型目录拜访协定 (LDAP) 来验证由 NGINX 代理的利用的用户。它作为 Python 守护过程(daemon)公布,相干 NGINX 配置位于 https://github.com/nginxinc/n... ,咱们的博文对其目标和配置进行了详细描述。 如果呈现以下任何一种状况,LDAP 参考施行的部署都会受到破绽的影响。下文具体探讨了这些状况及其躲避办法:    1.命令行参数用于配置 Python 守护过程   2.有未应用的可选配置参数   3.LDAP 身份验证取决于特定的组的成员身份 注:LDAP 参考施行作为参考施行公布,并且形容了集成的工作机制以及验证集成所需的所有组件。它不是生产级 LDAP 解决方案。举例来说,示例登录页面中应用的用户名和明码没有加密,平安告诉会提醒这一点。 躲避状况 1:命令行参数用于配置 Python 守护过程配置 LDAP 参考施行的次要办法是应用若干 proxy_set_header 指令(示例配置和文档进行了具体介绍)。不过,配置参数也能够在初始化 Python 守护过程(nginx-ldap-auth-daemon.py) 的命令行上设置。 如果在命令行上设置配置参数,攻击者便能够通过发送精心设计的 HTTP 申请标头笼罩其中局部或所有参数。为了避免这种状况产生,需在 NGINX 配置(Repo 中的 nginx-ldap-auth.conf)中为 location = /auth-proxy 块增加以下配置,以确保在身份验证时疏忽所有无关的申请标头。 ...

August 24, 2022 · 1 min · jiezi

关于nginx:实操CentOS8系统中创建LVM逻辑卷

条带化逻辑卷将在所有可用物理卷上均匀写入数据。咱们有四个物理卷,将数据写入条带化逻辑卷时,它将数据条带化到所有磁盘上,从而提供更高的读写性能。工作原理假如咱们要写一个32MB的文件。第一个4 MB(默认1个PE(物理扩大)=4M)将写入第一个磁盘/dev/sdb1,而后第二个4 MB将写入第二个磁盘/dev/sdc1,第三个4 MB将写入第三个磁盘/dev/sdd1,第四个4 MB将写入第四个磁盘/dev/sde1,第五个将从第一个磁盘/dev/sdb1开始。此过程将以循环形式重复进行。从I/O的角度提供了更高的性能。此外,单次写入的默认最小大小能够从64k开始。在咱们的设置中,咱们将应用128k。条带中容许最小磁盘数为2个。增加4块硬盘,并创立物理卷零碎中已增加四块20GB的硬盘:上面创立物理卷:[root@localhost ~]# pvcreate /dev/sd[a-d] Physical volume "/dev/sda" successfully created. Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. Physical volume "/dev/sdd" successfully created. 创立一个卷组[root@localhost ~]# vgcreate vg01_data /dev/sd[a-d] Volume group "vg01_data" successfully created[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- <19.00g <2.00g vg01_data 4 0 0 wz--n- 79.98g 79.98g 创立一个条带卷[root@localhost ~]# lvcreate -L 20G -i 4 -I 128k -n lv_data vg01_data /dev/sd[a-d] Logical volume "lv_data" created. ...

August 23, 2022 · 1 min · jiezi

关于nginx:Nginx-跨域问题解决方案

很多人都会遇到 Nginx 跨域的问题, 而我遇到的问题是: 客户端在 www.a.com服务端在 www.b.comNginx 在 www.c.com此时须要对 Nginx 进行跨域配置才能够拜访 www.c.com 的获取客户端 www.a.com 来申请 www.b.com 的数据, 我的 Nginx 配置如下(重要局部): location / { add_header 'Access-Control-Allow-Origin' $http_origin; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } root html; proxy_pass http://xxx:8000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 5;}别忘了把配置中 proxy_pass 对应的 http://xxx:8000/ 地址换成你的服务地址, 当然了, 你的客户端申请的地址不能够是你的服务地址, 而是 Nginx 的地址, 这样就能够达到解决跨域的问题。感兴趣的敌人能够在3A服务器部署一套本人试验下。 ...

August 22, 2022 · 1 min · jiezi

关于nginx:完全卸载nginx及安装的详细步骤

前言 在开局配置Nginx时有可能会配置谬误,报各种错误代码。看不懂或者懒得去看这个报错时,其实最简略的形式是卸载并重装咯。明天就带大家一起学习下,如何彻底卸载nginx程序。 一、卸载NGINX卸载nginx程序的具体步骤 1、进行Nginx软件 /usr/local/nginx/sbin/nginx -s stop 如果不晓得nginx装置门路,能够通过执行ps命令找到nginx程序的PID,而后kill其PID 2、查找根下所有名字蕴含nginx的文件find / -name nginx 3、执行命令 rm -rf *删除nignx装置的相干文件 阐明:全局查找往往会查出很多相干文件,然而前缀根本都是雷同,前面不同的局部能够用*代替,以便疾速删除~ [root@qll251 ~]# rm -rf /usr/local/sbin/nginx[root@qll251 ~]# rm -rf /usr/local/nginx[root@qll251 ~]# rm -rf /usr/src/nginx-1.11.1[root@qll251 ~]# rm -rf /var/spool/mail/nginx4、其余设置 如果设置了Nginx开机自启动的话,可能还须要上面两步 chkconfig nginx off rm -rf /etc/init.d/nginx 删除之后,便可重新安装nginx了 二、开始装置NGINXa、装置所需插件1、装置gccgcc是linux下的编译器在此不多做解释,感兴趣的小伙伴能够去查一下相干材料,它能够编译 C,C++,Ada,Object C和Java等语言 命令:查看gcc版本 gcc -v 个别阿里云的centOS7外面是都有的,没有装置的话会提醒命令找不到, 装置命令: yum -y install gcc2、pcre、pcre-devel装置pcre是一个perl库,包含perl兼容的正则表达式库,nginx的http模块应用pcre来解析正则表达式,所以须要装置pcre库。 装置命令: yum install -y pcre pcre-devel 3、zlib装置zlib库提供了很多种压缩和解压缩形式nginx应用zlib对http包的内容进行gzip,所以须要装置 装置命令: yum install -y zlib zlib-devel4、装置opensslopenssl是web平安通信的基石,没有openssl,能够说咱们的信息都是在裸奔。。。。。。 装置命令: ...

August 22, 2022 · 3 min · jiezi

关于nginx:i7z命令工具-–-用来查看CPU状况

i7z用来报告Intel CPU信息的工具。 显示的信息包含Turbo Boost、频率,顶部显示每个核在C0/C1/C3/C6状态下的以后频率、温度和工夫。装置在ubuntu中装置i7z:bpang@node01:~$ sudo apt install -y i7z在Centos7中装置i7z,须要从github中下载,并且编译:[root@localhost ~]# yum -y install make gcc gcc-c++ ncurses ncurses-devel[root@localhost ~]# git clone https://github.com/ajaiantila...[root@localhost ~]# cd i7z[root@localhost i7z]# make && make install如何应用?以 root 身份运行 i7z:[root@localhost i7z]# ./i7z_64bit首先会显示CPU相干的根本信息,显示CPU型号,第几代CPU。上面应用的不是桌面版CPU,所以这里有的信息没有显示:上面进入了实时监控CPU模式:Socket [0] / Socket [1]:示意应用两个 CPU 的零碎。physical cores=16: 示意 CPU有十六个物理内核。logical cores = 32 示意超线程。十六个物理内核,但每个都启用了超线程。

August 19, 2022 · 1 min · jiezi

关于nginx:什么是nginx

Nginx 的介绍Nginx 是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 在高连贯并发的状况下,Nginx 是 Apache 服务器不错的替代品。 Nginx 的产生Nginx 与 Apache 一样都是一种 Web 服务器。基于 REST 架构格调,以对立资源描述符(Uniform Resources Identifier)URI 或者对立资源定位符(Uniform Resources Locator)URL 作为沟通根据,通过 HTTP 协定提供各种网络服务。 然而,这些服务器在设计之初受到过后环境的局限,例如过后的用户规模、网络带宽、产品特点等局限并且各自的定位和倒退都不尽相同,这也使得各个 Web 服务器有着各自显明的特点。 Apache 的倒退期间很长,而且是毫无争议的世界第一大服务器。它有着很多长处:稳固、开源、跨平台等等。 然而也存在一些局限性: 呈现的工夫太长了,它衰亡的年代,互联网产业远远比不上当初,所以它被设计为一个重量级的。 不反对高并发,在它下面运行数以万计的并发拜访,会导致服务器耗费大量内存。 操作系统对其进行过程或线程间的切换也耗费了大量的 CPU 资源,导致 HTTP 申请的均匀响应速度升高。 等等这些都决定了 Apache 不可能成为高性能 Web 服务器,轻量级高并发服务器 Nginx 就应运而生了。 俄罗斯的工程师 Igor Sysoev,他在为 Rambler Media 工作期间,应用 C 语言开发了 Nginx。 Nginx 作为 Web 服务器始终为 Rambler Media 提供杰出而又稳固的服务。而后呢,Igor Sysoev 将 Nginx 代码开源,并且赋予自由软件许可证。 ...

August 19, 2022 · 1 min · jiezi

关于nginx:docker部署jar项目推送到Dockerhub

1,编写DockerfileFROM java:8MAINTAINER kason <你的邮箱@88.com>ADD admin-api-0.0.1-SNAPSHOT.jar test.jarEXPOSE 7001ENTRYPOINT ["java","-jar","test.jar"]2,生成镜像docker build -t bl-play-api-admin-test:1.0.0 .3,运行镜像,生成容器docker run -d -p 7001:7001 bl-play-api-admin-test:1.0.0能够失常拜访: 4,登录dockerhubdocker loginLogin with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.Username: wx**88Password:Login SucceededLogging in with your password grants your terminal complete access to your account.For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/5,给镜像打tagdocker tag w****8/bl-play-api-admin-test:1.0.0 w****8/bl-api-api-admin-test:1.0.0 ...

August 18, 2022 · 1 min · jiezi

关于nginx:如何在-Linux-系统中配置-firewalld-防火墙策略

防火墙对于管制进出 Linux 服务器的网络流量至关重要。它可能定义一组防火墙规定来管制主机上的传入流量。本文介绍如何增加、删除、启用和禁用防火墙规定和区域。什么是FirewallD“firewalld”是firewall daemon。它提供了一个动静治理的防火墙,带有一个十分弱小的过滤零碎,称为 Netfilter,由 Linux 内核提供。FirewallD 应用zones和services的概念,而 iptables 应用chain和rules。与 iptables 相比,“FirewallD”提供了一种非常灵活的形式来解决防火墙治理。每个zones都能够依照指定的规范进行配置,以依据你的要求承受或回绝某些服务或端口,并且它能够与一个或多个网络接口相关联。默认区域为public区域。[yijiFirewalld zones[/yiji]以下命令列出 FirewallD 提供的zones。运行以下命令以列出zones:[root@server1 ~]# firewall-cmd --get-zonesblock dmz drop external home internal public trusted workblock: 对于 IPv4,任何传入连贯都会被 icmp-host-prohibited 音讯回绝,对于 IPv6 则是 icmp6-adm-prohibited。dmz:利用于你的DMZ区域的计算机,这些计算机可公开拜访,但对外部网络的拜访受到限制。仅承受选定的传入连贯。drop:任何传入连贯都将在没有任何告诉的状况下被抛弃。只容许传出连贯。external:用于在零碎中充当路由器时启用 NAT 假装的内部网络。只容许选定的传入连贯。home:用于家庭网络。仅承受选定的传入连贯。internal:用于外部网络,网络上的其余零碎通常是可信赖的。仅承受选定的传入连贯。public:用于公共区域,仅承受选定的传入连贯。trusted:承受所有网络连接。work:用于工作区域,同一网络上的其余计算机大多受信赖。仅承受选定的传入连贯。Firewalld servicesFirewalld 的service配置是预约义的服务。要列出可用的服务模块,请运行以下命令:[root@server1 ~]# firewall-cmd --get-services Firewalld的长期设置和永恒设置Firewalld 应用两个独立的配置,即长期设置和永恒设置:长期设置: 长期设置不会在零碎重启时放弃不变。这意味着长期设置不会主动保留到永恒设置中。永恒设置: 永恒设置会存储在配置文件中,将在每次重新启动时加载并成为新的长期设置。启用、禁用FirewalldFirewalld默认装置在Centos7/8中,上面命令时如何启用或者停用firewalld:# 启用Firewalld[root@server1 ~]# systemctl start firewalld 禁用Firewalld[root@server1 ~]# systemctl stop firewalld 开机启动[root@server1 ~]# systemctl enable firewlald 禁止开机启动[root@server1 ~]# systemctl disable firewalld查看firewlald的状态:[root@server1 ~]# systemctl status firewalld或者[root@server1 ~]# firewall-cmd --staterunning zone治理Firewalld 为每个区域提供不同级别的安全性,公共区域设置为默认区域。上面命令查看默认区域:[root@server1 ~]# firewall-cmd --get-default-zone public上面命令查看默认区域的配置:[root@server1 ~]# firewall-cmd --list-allpublic (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ntp ssh ports: 2222/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: ...

August 16, 2022 · 3 min · jiezi

关于nginx:nginx版本升级详解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 背景nginx有0day破绽,所以须要降级下版本。 nginx存在0day破绽堆栈溢出导致近程代码执行,影响版本Nginx<=1.21.5。装置新版本我的是1.12.2版本,那就降级到官网最新版本1.22.0。 步骤1、下载1.22.0版本,再上传到服务器 详情 请查看:毛毛虫的小小蜡笔

August 16, 2022 · 1 min · jiezi

关于nginx:nginx的stop和quit命令详解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 nginx常用命令一般来说,nginx罕用的命令就是上面几个: // 启动nginxsystemctl start nginx// 从新加载配置,应用新配置启动新的工作过程,优雅地敞开旧的工作过程nginx -s reload// 疾速敞开nginx -s stop// 优雅敞开nginx -s quit启动,就是启动nginx了。 reload,指的是改了配置后,须要执行reload命令来加载最新的配置。 stop和quit,指的是敞开nginx,只是敞开的形式不太一样。 这里探讨下,stop和quit的具体区别详情 请查看:毛毛虫的小小蜡笔

August 12, 2022 · 1 min · jiezi

关于nginx:win10安装nginx

简介Nginx是一款自在的、开源的、高性能的HTTP服务器和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx能够进行反向代理、负载平衡、HTTP服务器(动静拆散)、正向代理等操作。因为最近在公司应用到了Nginx,这里简略记录一下本人在Win1064位零碎上配置应用Nginx的过程。 我应用3A服务器近程连贯的零碎,提早低,不便做试验 Nginx的利用场景是: 1、 http服务器。Nginx是一个http服务能够独立提供http服务,能够做网页动态服务器。 2、 虚拟主机。能够实现在一台服务器虚构出多个网站,例如集体网站应用的虚拟主机:基于端口的,不同的端口基于域名的,不同域名 3、 反向代理,负载平衡。当网站的访问量达到肯定水平后,单台服务器不能满足用户的申请时,须要用多台服务器集群能够应用nginx做反向代理。并且多台服务器能够均匀分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的状况。 接下来,开始装置: (1)下载安装包下载地址:http://nginx.org/en/download.... (2)解压将下载的压缩包拷贝到想要装置的门路 接下来,解压文件夹。(3)装置1)定位到解压文件夹 2)启动输出start nginx.exe”: 之后,会有一个弹窗,点击确定即可。(4)验证在浏览器地址栏输出:localhost,会看到如下图所示的nginx欢送界面: 如上图,示意装置胜利了。

August 11, 2022 · 1 min · jiezi

关于nginx:验证nginx配置文件遇到的路径问题

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 验证nginx配置文件当想验证配置文件是否正确的时候,比方执行上面的命令:nginx -t -c nginx.conf 后果发现报错了。 如下截图所示: 疑难:-c前面接管的的确是filename啊,为啥还会报错? 莫非-c前面接管的是绝对路径? 详情 请查看:毛毛虫的小小蜡笔

August 9, 2022 · 1 min · jiezi

关于nginx:nginx的域名访问和路径结尾斜杠问题

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 前提在浏览器拜访的斜杠问题,要辨别域名和门路两方面来讲述。 域名斜杠问题间接拜访域名,浏览器都会在域名最初带上斜杠。比方拜访的是:https://www.baidu.com,实际上拜访的是:https://www.baidu.com/。 因为浏览器会默认带上斜杠。如下截图所示: 但地址栏是看不到斜杠的: 详情 请查看:毛毛虫的小小蜡笔

August 4, 2022 · 1 min · jiezi

关于nginx:Centos8中如何使用Chrony同步时间

在Linux服务器中如果咱们心愿所有Linux服务器都具备正确的工夫,则必须配置一些NTP客户端,该客户端将始终从近程NTP服务器获取正确的工夫。装置chrony应用上面命令在Centos8中装置chrony:[root@server1 ~]# yum -y install chronychrony装置实现之后,会有两个可执行程序:chronyc: chrony命令行工具chronyd: chrony的守护过程Chrony的配置文件Chrony的配置文件是/etc/chrony.conf,上面列出了示例chrony.conf文件:[root@server1 ~]# cat /etc/chrony.conf pool 2.centos.pool.ntp.org iburst chrony将从中获取工夫的近程NTP服务器。driftfile /var/lib/chrony/drift 零碎时钟频率都有小小的误差,这个就是为什么计算机运行一段时间后工夫会不准确。NTP会主动来监测咱们时钟的误差值并予以调整,所以它会把记录下来的误差先写入driftfile,重新启动零碎后,之前的计算结果也就不会失落了。keyfile /etc/chrony.keys 该文件蕴含用于NTP身份验证的密钥。logdir /var/log/chrony 它是记录Chrony的日志文件。测试chrony就像ntpdate命令一样,咱们能够应用chronyd手动将Linux服务器的工夫与近程NTP服务器进行同步。语法:chronyd -q ‘server {ntp_server_name} iburst’上面应用实例:[root@server1 ~]# chronyd -q 'server s1a.time.edu.cn iburst'2021-05-25T01:59:38Z chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)2021-05-25T01:59:38Z Initial frequency -4.035 ppm2021-05-25T01:59:42Z System clock wrong by -0.006248 seconds (step)2021-05-25T01:59:42Z chronyd exiting 从下面的输入中能够看到,chrony已校对了零碎工夫。Start和Enable chronyd服务运行以下命令以启用chronyd服务:[root@server1 ~]# systemctl enable chronyd[root@server1 ~]# systemctl start chronyd运行上面命令查看chronyd的服务状态:[root@server1 ~]# systemctl status chronyd ...

August 3, 2022 · 2 min · jiezi

关于nginx:对话红帽副总裁曹衡康CentOS-Stream是CentOS的未来

作为CentOS将来新的版本,CentOS Stream代表了进一步推动Linux翻新的最好形式,它让更宽泛的生态系统社区与红帽企业Linux的开发有更严密的分割。“世界在一直变动,开发流程也在一直地翻新、优化,红帽认为,把CentOS Stream放在RHEL之前,是更优化的做法。CentOS Stream的场景会比过来的CentOS更好、更适宜整个社区的倒退。”曹衡康说道。2020年,红帽公司发表,将在2021年12月31日和2024年6月30日别离终止对CentOS 8和CentOS 7的服务反对,把CentOS我的项目的工作和投资集中在CentOS Stream上,以进一步推动Linux翻新。现在,CentOS 8已进行保护,CentOS 7也将在两年后进行服务,无关CentOS的探讨变得愈发强烈。CentOS Stream与CentOS的区别是什么?CentOS Stream能够为用户带来哪些价值?CentOS Stream将来有哪些战略重点?带着这些问题,比特网采访到了红帽寰球副总裁兼大中华区总裁曹衡康先生。作为一家开源解决方案供应商,红帽始终以来秉持开源开发模式和上游优先的准则,和开源社区紧密联系在一起,与合作伙伴、客户和开源开发者一起开发解决方案。从2014年到2019年间,红帽企业级Linux生态系统逐步造成了面向社区畛域的Fedora、面向公有畛域的RHEL,以及面向合作伙伴、上游、社区的CentOS。其中,Fedora是一款由社区爱好者构建的面向日常利用的操作系统,每六个月公布一个新版本;RHEL面向企业和利用开发合作伙伴,具备极高的安全性和稳定性;CentOS是由RHEL源代码所衍生进去的版本,次要针对老本比拟敏感的用户以及生态系统开发人员,通常在RHEL更新后不久实现版本迭代。为什么停用CentOS?作为RHEL的复刻版本,CentOS凭借其开源、收费、稳固的个性深受市场青睐。但时代的倒退对开源翻新提出了更高的要求,为了打造更好的翻新环境,红帽从新设计推出了更好的社区版本CentOS Stream。CentOS Stream介于Fedora和RHEL之间,是一个上游的开源开发平台,用户能够在这里开发、测试和奉献一个继续公布的发行版,它位于红帽企业Linux后面。也就是说,红帽在RHEL上开发的性能曾经在CentOS Stream上实现了,二者在性能基本上统一,区别为RHEL是订阅版,CentOS Stream是社区版。曹衡康指出,红帽之所以对CentOS Stream进行投资,次要是因为CentOS在RHEL的上游,合作伙伴在CentOS上减少性能后并不会反馈到上游社区,因而就变成了CentOS的分支,这些分支因为不足保护,就会缓缓变成“孤儿”,而缓缓消失掉。然而反过来,如果将CentOS Stream的地位放到RHEL的上游,那么,红帽的很多生态合作伙伴会更快拿到将来RHEL版本的新性能,并且将开发出新性能留在CentOS Stream以及RHEL中。以打补丁举例,如果有黑客攻击Linux,用RHEL红帽会立马把补丁打进去,公布给所有用户。而CentOS用户危险很大,因为通常CentOS的版本公布是在RHEL之后,所以补丁无奈及时更新。但CentOS Stream就不一样,因为它是红帽还在开发的产品,红帽会立马把所有补丁补好,让用户疾速地拿到补丁,这是一个很大的区别。如何抉择正确的Linux平台?当初,CentOS曾经停用,对于用户来说个别有两种抉择,一是迁徙到CentOS Stream,二是思考应用红帽RHEL订阅版。除此之外,用户是否能够将产品环境迁徙到其余Linux平台?对此,曹衡康给出了在后CentOS时代,抉择平台须要留神的六个方面:第一,代码是否真的开源。市面上有很多厂商是挂着开源的标记,其实不做开源。过来很多厂商,拿着CentOS,加了一些性能,从新打包发售。第二,代码权利保障。要确定不会进犯他人的知识产权,一旦你应用侵权代码,被控告侵权,赔偿额是十分高的。红帽RHEL是确定代码没有侵权的。第三,交付形式。交付形式就是有一个十分好的服务,有任何问题,打个电话,24小时都会有人提供反对和服务。第四,服务响应工夫。CentOS的性能很好,性能齐全没有问题,可是所有货色要本人来做。第五,产品生命周期&技术生态。红帽任何版本进去之后,肯定是一个十分长的生命周期,所以不必放心须要不断更新、一直重新配置和做一些扭转。第六,产品稳定性。Linux平台的稳固、平安、牢靠是一个很重要的决策因素。采访最初,曹衡康还走漏了CentOS Stream在技术层面的将来布局。他示意,CentOS Stream是RHEL的继续交付版本,以DevOps, CI/CD的形式去做企业级操作系统的开发,实现稳固和麻利的对立,自身就是技术层面的一大亮点。通过这种形式,会进一步激发基于CentOS Stream的翻新。另外,在具体的技术发力点上,对于不同体系架构、新硬件的反对、不同利用场景,以及红帽始终在做的云、虚拟化、容器、云原生等,都是将来的重点。最初,作为CentOS将来新的版本,CentOS Stream代表了进一步推动Linux翻新的最好形式,它让更宽泛的生态系统社区与红帽企业Linux的开发有更严密的分割。

August 3, 2022 · 1 min · jiezi

关于nginx:nginx-如何将-http-转成-https

一、采纳 nginx 的 rewrite 办法上面是将所有的 http 申请通过 rewrite 重写到 https 上。例如将所有的 dev.wangshibo.com 域名的 http 拜访强制跳转到 https。上面配置均能够实现:server { listen 80; server_name dev.wangshibo.com; index index.html index.php index.htm; access_log /usr/local/nginx/logs/8080-access.log main; error_log /usr/local/nginx/logs/8080-error.log; # 办法1 这是ngixn早前的写法,当初还能够应用 rewrite ^(.*)$ https://$host$1 permanent; # 办法2 这是nginx最新反对的写法 # return 301 https://$server_name$request_uri; # 办法3 这种形式实用于多域名的时候,即拜访wangshibo.com的http也会强制跳转到https://dev.wangshibo.com下面 # 例如 server_name dev.wangshibo.com wangshibo.com *.wangshibo.com; # if ($host ~* "^wangshibo.com$") { # rewrite ^/(.*)$ https://dev.wangshibo.com/ permanent; # } # 上面是最简略的一种配置 # if ($host = "dev.wangshibo.com") { # rewrite ^/(.*)$ http://dev.wangshibo.com permanent; # } location ~ / { root /var/www/html/8080; index index.html index.php index.htm; } }下面的跳转配置rewrite ^(.*)$ https://$host$1 permanent; 也能够改为上面rewrite ^/(.*)$ http://dev.wangshibo.com/$1 permanent;或者rewrite ^ http://dev.wangshibo.com$request_uri? permanent; ...

August 2, 2022 · 1 min · jiezi

关于nginx:网站搭建域名和证书配置

一、购买云服务器云服务器在哪里买也是一样 二、服务器装置各种工具有了服务器,就须要在服务器上装咱们须要的工具,次要有以下这些 nginx:能够作为动态资源服务,同时能配置域名、代理等,也能够是 php,这个随便git:部署更新个别都会用到 gityarn:习惯了 yarn,npm 也能够node:npm 包三、部署网站有了服务器就能够部署咱们的网站了 也就是将网站部署到服务器上的某个目录,具体什么形式本人决定,手动 copy,或者是利用 pm2,或者 docker,随便 咱们将动态资源部署到/usr/share/nginx/html目录下,这是 nginx 动态资源服务 咱们能够间接执行vim /etc/nginx/nginx.conf 关上 nginx 配置文件,看一下配置 server { listen 80 default_server; listen [::]:80 default_server; # 动态资源目录 root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }动态资源部署后,就能够通过 ip 拜访网站了 留神:如果咱们部署的不是动态资源,而是一个 node 服务,那咱们是不须要 nginx/php 这些服务的,间接在服务器上将 node 服务跑起来就能够了,而后通过 ip+端口就能拜访到服务另外,可能默认服务器端口只凋谢了 80 端口,如果心愿能通过其它端口拜访服务,须要在服务器运营商那里配置平安组的进出站规定,例如百度云 ...

August 2, 2022 · 2 min · jiezi

关于nginx:nginx的root和alias详解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 简述root:申请的根目录 alias:申请的虚拟目录 区别1、root会加上location的门路,而alias不会 root 配置如下所示: location /file/ { root /html/;}成果如下所示: 详情 请查看:毛毛虫的小小蜡笔

August 1, 2022 · 1 min · jiezi

关于nginx:配置Nginx允许访问目录

默认状况下, Nginx拜访目录时会响应403, 能够通过配置开启目录拜访权限location中减少: autoindex on; 残缺配置示例: server { listen 80; server_name www.huling.com www.hlkj.com; root /www/wwwroot/www.huling.com; index index.html index.htm default.php default.htm default.html; #charset koi8-r; gzip on; gzip_buffers 32 4K; gzip_comp_level 6; gzip_min_length 2K; # 容许音讯头带_下划线 underscores_in_headers on; access_log logs/huling.access.log combined; charset utf-8,gbk; location / { # 容许拜访目录 autoindex on; # 显示出文件的大略大小,单位是kB或者MB或者GB autoindex_exact_size off; # 改为on后,显示的文件工夫为文件的服务器工夫 autoindex_localtime on; root /www/wwwroot/www.huling.com/html; index index.html index.htm; }}配置后重启nginx服务失效 autoindex的另外两个配置参数阐明:autoindex_exact_size;默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大略大小,单位是kB或者MB或者GBautoindex_localtime;默认为off,显示的文件工夫为GMT工夫。改为on后,显示的文件工夫为文件的服务器工夫配置后成果

July 28, 2022 · 1 min · jiezi

关于nginx:接口主备配置

springboot我的项目降级把每个我的项目加了限流,管制每个我的项目的运行状况 nginx配置如下upstream api-server{ server 127.0.0.1:9800 weight=10; server 43.247.184.75:9800 weight=40; server 43.247.184.75:9801 weight=40;}

July 27, 2022 · 1 min · jiezi

关于nginx:警惕Nginx-ingress就这么挂了

背景形容 当下越来越多的企业正在拥抱k8s,如笔者公司根本所有服务都已容器化部署。 容器化场景下,ingress是一种通过http协定裸露k8s外部服务的api对象,也就是说ingress是k8s集群所有服务的拜访入口。基于ingress的流量拜访链路如下图所示: ingress解决方案不少,k8s默认举荐的是Nginx Ingress,这也是本篇文章的配角。 7.18 线上服务504 7.18号早晨21点左右,笔者正在小区楼下跳绳(中年码农大肚子危机),看到工作群反馈有业务早晨19点左右呈现大量504。业务同学和SRE进行了初步排查剖析,19点左右业务有发版,发现问题后也执行了回滚操作;排查发现Nginx ingress转发申请到了不存在的pod IP。难道是Nginx ingress同步上游节点IP有异样,期间也重启了上游服务,问题未解决,19点30分左右,业务复原。 查问Nginx ingress拜访日志,18点49分业务开始呈现504,申请响应工夫5秒(proxy_connect_timeout 5s),Nginx ingress返回504。另外,18点49分之前(HTTP 200)申请的上游服务IP,与18点49分之后(HTTP 504)申请的上游IP雷同。 18点49分业务服务出现异常了?容器同学查问监控发现,该服务在18点49分从新调度了,也就是说,18点49分上游服务的IP曾经变了,老的IP地址不可拜访了,所以服务才呈现504。 kibana查问7.18号19点左右拜访日志,发现不止这一个服务504,还有一个服务也呈现大量504,而且景象完全一致。两个服务都是19:31分左右复原。 pod已从新调度,Nginx ingress为什么没有更新上游服务IP? 查找线上环境nginx-ingress-controller日志,发现日志采集(多种日志格局采集到一个topic,解析时可能抛弃了局部日志)有些问题,kibana查问不到无效日志。排查陷入僵局。 7.19 Nginx ingress技术调研 因为之前素来没有接触过Nginx ingress,也不理解其配置同步逻辑,7.19号决定简略钻研下Nginx ingress底层原理,以备不时之需。 github地址为 https://github.com/kubernetes... 。服务启动后,蕴含两个过程:1)nginx-ingress-controller过程基于Golang实现,负责监听k8s ingress资源,转换生成nginx.conf配置文件;2)nginx过程其实就是openresty,另外还基于lua提供本地接口,用于更新上游服务IP。 6 www-data 13h34 /nginx-ingress-controller --configmap=default/nginx-test-config --ingress-class=nginx-test68 www-data 0:15 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf nginx-ingress-controller同步的配置次要能够分为上面两类: ingress规定,须要转化为server + location配置,而且须要留神的是,所有服务的ingress配置最终转换合并到一个配置文件nginx.conf,导致这个文件十分大,个别至多几十万行。另外,这类配置的变更是须要reload nginx过程的。上游服务IP,nginx-ingress-controller监听endpoints,并通过本地接口告诉nginx过程,更新上游服务IP地址(http://127.0.0.1:10246/config...)。 查看nginx.conf配置,configuration接口拜访日志没有关上,无奈确定过后nginx-ingress-controller有没有通过这个接口更新上游IP。 另外因为日志采集问题,也无奈查看nginx-ingress-controller日志,7.18号问题,只能靠猜想了。。。只是心里隐隐有点好奇,为什么两个服务都是在7.18号晚19:31恢复正常?那一时刻产生什么了?难道这起case是容器平台造成的? 7.21 测试环境502 7.21号中午12点左右,测试容器平台和网关平台白屏,调试发现,前端某动态资源获取异样,前端搭档排查修复。 7.21号下午14:10分,反馈容器平台和网关平台前端所有接口申请全副502。kibana查问网关日志,发现全副是Nginx ingress返回502。 ...

July 24, 2022 · 2 min · jiezi

关于nginx:Nginx适配pc端和移动端

需要在开发中,咱们经常会遇到这样的需要:依据用户设施的不同,返回对应款式的页面。说白了,就是我在pc端看到的页面款式和布局,要跟挪动端的不一样。 通常,咱们应用自适应的前端框架(比方bootstrap),就能够达到这样的需要。这种办法不能说不行,然而(要害是这句),如果把pc端和挪动端都写到一块儿,就会进步代码的复杂度,升高代码的灵活性。 这样的例子太多了,我已经在做网站的时候,老板要求在pc端和挪动端不光显示的款式、布局不同,连显示的内容模块都要不同。pc端显示甲模块、乙模块,挪动端显示甲模块、丙模块,没过两天,需要又变了,pc端要显示甲模块、乙模块,还有丙模块,挪动端去掉丙模块,增加丁模块。......太血腥了 所以,对本人好一点,如果条件容许,还是把pc端和挪动端离开写为好。京东、淘宝......这些大网站也是这么干的。 思路如果咱们写好了两套计划:pc端和挪动端,那怎么部署呢?这是就须要nginx大显神通了。在nginx中,能够依据用户申请的user-agent来判断是返回pc端还是挪动端。 开干在nginx.conf文件中增加配置: server { listen 8081; server_name 127.0.0.1; location / { root /home/py/myDevelop/testNginx/pc/; if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') { root /home/py/myDevelop/testNginx/mobile/; } index index.html index.htm; } }阐明:这里就是用了一个if语句,应用$http_user_agent全局变量来判断用户申请的user-agent,指向不同的root门路,返回对应站点。这样就能够达到目标了。 ---(完)---

July 23, 2022 · 1 min · jiezi

关于nginx:Linux系统源码安装Nginx

零碎版本:centos7将安装包导入虚拟机yum编译一下新建程序用户再yum装置解压安装包源码装置编译装置配置软链接配置文件语法查看启动服务制作治理脚本给nginx加权限编辑配置文件查看和更改零碎本地关上资源数再批改配置文件重启服务应用浏览器查看

July 22, 2022 · 1 min · jiezi

关于nginx:打造一套NGINX监控

打造一套NGINX监控0. 前文笔者之前无心查看nginx的拜访日志access.log文件,发现有很多的像/phpMyadmin/index.php这种拜访,IP归属地来自世界各地,应该有人在用肉鸡在始终扫描服务器破绽,就萌发了想打造一套nginx监控零碎的想法。我的要求很简略,只有能在网站上实时查看日志就行,不必每次去服务器查看。最开始我想到的是ELK这套解决方案,我之前我理解过,然而前面想了一下,ELK有点太重了,次要是外围的部件Elasticsearch是用Java写的,比拟占资源,用在我这里有点杀鸡用牛刀的感觉(服务器扛不住)。前面在网上查找的时候,理解到了loki+promtail+grafana的这套轻量级解决方案,便决定部署来试试看。 以下操作应用的是Centos 7进行演示1. 装置nginx编译nginx,加载ngx_http_geoip2_module模块,获取拜访ip的geoip2区域信息1.1 下载、编译nginx# 装置编译环境$ yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel# 下载安装libmaxminddb$ wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz$ tar -zxvf libmaxminddb-1.3.2.tar.gz$ cd libmaxminddb-1.3.2$ ./configure && make && make install$ echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf $ ldconfig# 下载ngx_http_geoip2_module模块$ yum install -y git$ git clone https://github.com/leev/ngx_http_geoip2_module# 下载编译nginx$ wget https://nginx.org/download/nginx-1.18.0.tar.gz$ tar -zxvf nginx-1.18.0.tar.gz$ cd nginx-1.18.0# 如果之前曾经装置过nginx,能够用/path/to/nginx/sbin/nginx -V查看nginx编译参数# /root/ngx_http_geoip2_module换成你本人的门路$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/root/ngx_http_geoip2_module$ make && make install1.2 下载GeoLite2数据库maxmind官网下载,能下载最新的,但须要注册登录 笔者提供的,不是最新的,但应该也够用GeoLite2-City_20220705.tar.gzGeoLite2-Country_20220705.tar.gz $ tar -zxvf GeoLite2-City_20220705.tar.gz$ mv ./GeoLite2-City_20220705/GeoLite2-City.mmdb /usr/local/nginx/conf$ tar -zxvf GeoLite2-Country_20220705.tar.gz$ mv ./GeoLite2-Country_20220705/GeoLite2-Country.mmdb /usr/local/nginx/conf1.3 配置nginx须要将日志格局配置成JSON,外面蕴含了geoip_country_codehttp { include mime.types; default_type application/octet-stream; log_format json_analytics '{' '"msec": "$msec", ' # request unixtime in seconds with a milliseconds resolution '"connection": "$connection", ' # connection serial number '"connection_requests": "$connection_requests", ' # number of requests made in connection '"pid": "$pid", ' # process pid '"request_id": "$request_id", ' # the unique request id '"request_length": "$request_length", ' # request length (including headers and body) '"remote_addr": "$remote_addr", ' # client IP '"remote_user": "$remote_user", ' # client HTTP username '"remote_port": "$remote_port", ' # client port '"time_local": "$time_local", ' '"time_iso8601": "$time_iso8601", ' # local time in the ISO 8601 standard format '"request": "$request", ' # full path no arguments if the request '"request_uri": "$request_uri", ' # full path and arguments if the request '"args": "$args", ' # args '"status": "$status", ' # response status code '"body_bytes_sent": "$body_bytes_sent", ' # the number of body bytes exclude headers sent to a client '"bytes_sent": "$bytes_sent", ' # the number of bytes sent to a client '"http_referer": "$http_referer", ' # HTTP referer '"http_user_agent": "$http_user_agent", ' # user agent '"http_x_forwarded_for": "$http_x_forwarded_for", ' # http_x_forwarded_for '"http_host": "$http_host", ' # the request Host: header '"server_name": "$server_name", ' # the name of the vhost serving the request '"request_time": "$request_time", ' # request processing time in seconds with msec resolution '"upstream": "$upstream_addr", ' # upstream backend server for proxied requests '"upstream_connect_time": "$upstream_connect_time", ' # upstream handshake time incl. TLS '"upstream_header_time": "$upstream_header_time", ' # time spent receiving upstream headers '"upstream_response_time": "$upstream_response_time", ' # time spend receiving upstream body '"upstream_response_length": "$upstream_response_length", ' # upstream response length '"upstream_cache_status": "$upstream_cache_status", ' # cache HIT/MISS where applicable '"ssl_protocol": "$ssl_protocol", ' # TLS protocol '"ssl_cipher": "$ssl_cipher", ' # TLS cipher '"scheme": "$scheme", ' # http or https '"request_method": "$request_method", ' # request method '"server_protocol": "$server_protocol", ' # request protocol, like HTTP/1.1 or HTTP/2.0 '"pipe": "$pipe", ' # "p" if request was pipelined, "." otherwise '"gzip_ratio": "$gzip_ratio", ' '"http_cf_ray": "$http_cf_ray",' '"geoip_country_code": "$geoip2_data_country_code"' '}'; access_log logs/json_access.log json_analytics; geoip2 /usr/local/nginx/conf/GeoLite2-Country.mmdb { $geoip2_data_country_code country iso_code; $geoip2_data_country_name country names en; } geoip2 /usr/local/nginx/conf/GeoLite2-City.mmdb { $geoip2_data_city_name city names en; $geoip2_data_province_name subdivisions 0 names en; }}1.4 启动nginx$ /usr/local/nginx/sbin/nginx2. 装置loki、promtail、grafana应用docker部署,须要提前装置好docker,这里不再赘述,具体参见docker官网docker官网 ...

July 22, 2022 · 3 min · jiezi

关于nginx:前端日志采集方案浅析

前言在前端部署过程中,通常会应用nginx作为部署服务器,而对于默认的nginx服务来说,其提供了对应的日志记录,能够用于记录服务器拜访的相干日志,对于零碎稳定性及健壮性监控来说,日志采集、剖析等可能提供更加量化的指标性建设,本文旨在简述前端利用及打点服务过程中所须要应用的nginx采集计划。 架构打点日志采集 对于前端利用来说,通常须要埋点及解决对应的数据服务 利用日志采集 对于日常利用来说,通常须要对nginx服务器自身的稳定性进行收集解决 实际Nginx日志格局设置日志格局 log_format 为约定的日志内容,能够用于日志荡涤及过滤等,对于nginx的日志格局能够参看Nginx log_format官网文档 字段含意$time_iso8601服务器工夫的ISO 8610格局$remote_addr客户端地址$http_host主机名$statusHTTP响应代码$request_time解决客户端申请应用的工夫$request_length申请的长度$body_bytes_sent传输给客户端的字节数$request_uri蕴含一些客户端申请参数的原始URI$http_user_agent客户端用户代理日志门路配置server的access_log,例如: # /etc/nginx/nginx.confhttp { log_format aaa '$time_iso8601 $remote_addr $http_host $status $request_time $request_length $body_bytes_sent $request_uri $http_user_agent'; access_log /var/log/nginx/access.log aaa; server { if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})") { set $year $1; set $month $2; set $day $3; set $hour $4; set $minute $5; } access_log /var/log/nginx/aaa/$year$month-$day-$hour-$minute.log aaa; location = /dig.gif { empty_gif; } }}日志革除为避免nginx产生的日志占满磁盘,须要定期革除,能够设置革除的工夫距离为1天,例如: #!/bin/bash#Filename: delete_nginx_logs.shLOGS_PATH=/var/log/nginxKEEP_DAYS=30PID_FILE=/run/nginx.pidYESTERDAY=$(date -d "yesterday" +%Y-%m-%d)if [ -f $PID_FILE ];then echo `date "+%Y-%m-%d %H:%M:%S"` Deleting logs... mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access.${YESTERDAY}.log >/dev/null 2>&1 mv ${LOGS_PATH}/access.json ${LOGS_PATH}/access.${YESTERDAY}.json >/dev/null 2>&1 mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error.${YESTERDAY}.log >/dev/null 2>&1 kill -USR1 `cat $PID_FILE` echo `date "+%Y-%m-%d %H:%M:%S"` Logs have deleted.else echo `date "+%Y-%m-%d %H:%M:%S"` Please make sure that nginx is running...fiechofind $LOGS_PATH -type f -mtime +$KEEP_DAYS -print0 |xargs -0 rm -f也能够建设一个删除日志的脚本,用于记录删除脚本的日志 ...

July 19, 2022 · 6 min · jiezi

关于nginx:编程技巧│超实用-nginx-中常见的配置合集

封禁 IP通过 deny 能够封禁指定 IPhttp { # .... # 封禁IP deny 192.168.4.3; deny 31.42.145.0/24; deny 51.12.35.0/24;} 仅凋谢内网须要先禁止 192.168.1.1凋谢其余内网网段,而后禁止其余所有 IPlocation / { # block one workstation deny 192.168.1.1; # allow anyone in 192.168.1.0/24 allow 192.168.1.0/24; # drop rest of the world deny all; } 负载平衡须要在 nginx.conf 中配置转发服务器信息权重: weight=1,权重如果调配的值越大,权重越高最大连接数: max_fails=3,最多连贯失败次数为3次连贯失败工夫: fail_timeout=20s,每次连贯失败的工夫在站点配置 default.conf 中开启负载平衡# nginx.conf中配置转发服务器信息upstream web { server 192.168.37.2 weight=1 max_fails=3 fail_timeout=20s; server 192.168.37.3 weight=1 max_fails=3 fail_timeout=20s;}# default.conf中开启负载平衡location / { proxy_pass http://web/;} 列出文件列表有时候服务器作为资源服务器,给用户提供下载资源应用须要将服务上的文件以目录模式列出来能够通过配置 autoindex on 容许列出目录,启用目录流量能够通过 autoindex_exact_size off 显示出文件的确切大小,单位是 bytes能够通过 autoindex_localtime on 显示的文件工夫为文件的服务器工夫location / { autoindex on; autoindex_exact_size on; autoindex_localtime on;} 路由转发有时候用户通过路由拜访服务器的资源,其实你的资源在另一个文件夹上面能够应用 alias 命令,将用户申请进行转发# nginx服务器location /static { alias /public;} # window服务器location ^~ /static { alias "D:\\public\\动态资源";} 开启 gzip 压缩gzip 压缩是一种晋升访问速度的优化方向,能够大大提高http { # 开启gzip gzip on; # 是否在http header中增加Vary: Accept-Encoding,倡议开启 gzip_vary on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; gzip_proxied any; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU工夫 gzip_comp_level 6; # 设置压缩所须要的缓冲区大小 gzip_buffers 16 8k; # 设置gzip的版本 gzip_http_version 1.1; # 进行压缩的文件类型。javascript有多种形式,前面的图片压缩不须要的能够自行删除 gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;} 解决跨域server { location / { #容许跨域申请的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #容许带上cookie申请 add_header 'Access-Control-Allow-Credentials' 'true'; #容许申请的办法,比方 GET / POST / PUT / DELETE add_header 'Access-Control-Allow-Methods' *; #容许申请的header add_header 'Access-Control-Allow-Headers' *; }} 资源防盗链为了避免其余网站间接实用我方的动态资源,能够减少防盗链配置server { location ~*/(js|image|css) { # 检测*.autofelix.cn的申请,如果检测是有效的,间接返回403 valid_referers *.autofelix.cn; if ($invalid_referer) { return 403; } }} Keepalived 进步吞吐量通过 keepalived 能够设置长连贯解决的数量通过 proxy_http_version 能够设置长连贯 http 版本通过 proxy_set_header 能够革除 connection header 信息# nginx.conf中配置吞吐量upstream web { server 192.168.37.3 weight=1;keepalive 32;}# default.conf中配置location / { proxy_pass http://tomcats; proxy_http_version 1.1; proxy_set_header Connection "";} HTTP 强制跳转 HTTPS很多网站中,都强制实用 https 协定这样咱们就须要将 http 强制跳转到 httpsserver { # 监听的端口号 listen 80; # 强制跳转 rewrite ^(.*)$ https://$host$1 permanent;} server { # 监听的端口号 listen 443; # 主机名 server_name www.520web.cn; # 开启ssl验证 ssl on; # 字符集 charset utf-8; # 拜访的根目录 root /var/www/html; # 谬误页面 error_page 404 ...404文件门路; # 图片视频动态资源缓存到客户端工夫 location ~ .*\.(jpg|jpeg|gif|png|ico|mp3|mp4|swf|flv){ expires 10d; } # js/css动态资源缓存到客户端工夫 location ~ .*\.(js|css){ expires 5d; } # ssl的相干配置,pem文件的地址 ssl_certificate ...pem文件的绝对路径; # key文件的绝对路径 ssl_certificate_key ...key文件的绝对路径; # 断开重连工夫 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # ssl协定 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # 首页拜访的文件 location / { index index.php index.html index.htm; } # php-ftm配置 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}

July 19, 2022 · 2 min · jiezi

关于nginx:nginx-location匹配细节讲解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 前提优先级和匹配规定可参考之前的文章:nginx location匹配和优先级的示例解说 门路斜杠门路结尾有斜杠比方拜访的门路是: http://test.com/abc/此时拜访的是abc目录,nginx会依据规定,遍历abc目录下的index.htm等首页文件。 如果找到了,则返回该文件。找不到,则返回404。 详情 请查看:毛毛虫的小小蜡笔

July 13, 2022 · 1 min · jiezi

关于nginx:Mac-使用-Nginx-在本地部署静态网站

装置装置 Brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"装置 Nginxbrew install nginxnginx -v# nginx version: nginx/1.21.6启动 Nginxnginx重启nginx -s reload配置默认动态页面cd /usr/local/var/www默认配置cat /usr/local/etc/nginx/nginx.conf默认日志目录cd /usr/local/var/log/nginx新增的配置目录cd /usr/local/etc/nginx/servers/新增一个动态页面服务touch static.confvim static.confserver { listen 8607; root /Users/mazey/Web/ProjectXYZ; index index.html;}配置了 History 路由模式的 SPA 页面。 server { listen 8621; location / { root /Users/mazey/Web/ProjectXYZ; index index.html; try_files $uri /index.html; }}解释 try_files语法: try_files file... uritry_files 前面定义多个文件门路进行顺次尝试,响应存在的第一个文件,若文件都不存在,则会响应最初一个 uri 进行外部重定向。 try_files $uri /index.html;例如拜访 http://example.com/detail: 判断 / 目录下是否存在 detail 文件。若 detail 文件不存在则返回 http://example.com/index.html。附录装置 Nginx 后的 Terminal 输入。 ...

July 9, 2022 · 1 min · jiezi

关于nginx:Nginx部署配置

常用命令启动:nginx立刻进行:nginx -s stop优雅进行:nginx -s quit重启nginx -s reload查看配置文件是否失常,无语法错误nginx -t查看日志tail -f /var/log/nginx/access.logupstream根本语法upstream 的根本语法如下,一个 upstream 须要设置一个名称,这个名称能够在 server 外面当作 proxy 主机应用。 upstream ws { server 127.0.0.1:8080;}一个 upstream 能够设置多个 server ,通常状况下 Nginx 会轮询每一个 server,从而达到最根本的负载循环成果。 upstream default { server tflinux_php-fpm-tfphp_1:9000; server tflinux_php-fpm-tfphp_2:9000;}其余还能够配置一些 max_fails(最多出错数量)、fail_timeout(故障期待超时工夫)、backup(备用服务器参数)等等,不多做介绍,用到的时候能够查一下。 配置http进入 nginx 目录,配置 /etc/nginx/nginx.conf,次要是确认你要寄存的配置文件有没有被引入(include)进来,还有就是配置 upstream,这样你在我的项目的 .conf 文件中能够间接援用。 http { # 省略其余一些默认配置 # 单纯应用一个server的时候有点相似在全局定义了哥别名-ws,前面你在子配置文件里应用http://ws/就是等价http://127.0.01:8080 upstream ws { server 127.0.0.1:8080; } # .... include /etc/nginx/sites-enabled/*;}无证书server { # 域名,没有域名就不必写这行,间接用ip拜访 server_name dev.xxx.com; # 监听的端口,拜访时通过 ip:9099 拜访 listen 9099; # gzip 压缩,放慢传输效率,有利于页面首次渲染 gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; gzip_disable "MSIE [1-6]\."; # 指定我的项目入口文件index.html寄存的地位 root /home/xxx/my-project/dist; # 配置反向代理,门路中匹配到了/api结尾,就转发到http://127.0.0.1:8888下,所以你本地发的申请就不须要带端口了 location /api { proxy_set_header Host $http_host; # 这里也能够应用upstream,而后用它的名字代替,都一样,看你本人 proxy_pass http://127.0.0.1:8888; } # 配置重定向,避免页面刷新404 location / { try_files $uri $uri/ /index.html; }}配置ssl证书申请 ssl 证书把证书copy到 nginx 目录下,比方我放在了一个叫 ca 的目录,一个 .cer 文件,一个 .key 文件,一共两个文件配置 .conf文件server { server_name ghostwang.xxx.com; # 留神这里是443端口 listen 443 ssl; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; gzip_disable "MSIE [1-6]\."; # 证书配置相干 # cer文件寄存目录 ssl_certificate /etc/nginx/ca/xxx.xxx.com.cer; # key文件寄存目录 ssl_certificate_key /etc/nginx/ca/xx.xx.com.key; # ssl其余的一些配置... ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE; ssl_prefer_server_ciphers on; root /var/www/my-project/dist; # 配置websocket的代理,这样后端的ws就不须要配置wss了,通过反向代理,去申请ws协定的接口,不然你https的网站,在ajax的申请里间接申请ws会报错 location /api/v1/ws { # ws 就是http外面配置的upstream # 等价 proxy_pass http://localhost:8080 proxy_pass http://ws; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; } # 反向代理http接口 location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://ws; } location / { try_files $uri $uri/ /index.html; }}

July 9, 2022 · 2 min · jiezi

关于nginx:Nginx-实战核心知识点整理下

Nginx 作为一款高性能的代理软件,在工作中常被用做负载均衡器、正向反向代理。最近在看了一个对于 Nginx 的视频,老师讲得很不错。笔者也记录了一下整套课程的一些重点和本人的了解。 上篇:https://segmentfault.com/a/11... 上篇次要跟大家讲述了一下如果应用 Nginx,也是为下篇进行铺垫。接下来的内容能让读者手上的 Nginx 施展最大作用。 那咱们开始吧! sticky 维持状态上篇介绍了几种调度算法,咱们一起回顾一下外面的 ip_hash 和 url_hash ip_hash:对于紧急扩容场景,应用这种策略可能疾速引入新节点,但如果后端服务忽然宕机会造成状态失落,能够应用 Global Session 的形式解决(引入 Spring Session + Redis)。但后端服务数量太多也会对外置的 Redis 造成压力。 upstream flask { ip_hash; server 172.20.0.11:80; server 172.20.0.12:80;}比方 ERP 零碎应用 URL 哈希比拟适合,因为对于一个企业,多个用户收回的申请达到路由器后都会转换成同一个 IP,容易造成流量歪斜。考试零碎也是雷同情理。url_hash:对于不反对 Cookies 的场景,个别会把 JSESSION_ID 放到 URL 中,这时候能够应用 url_hash 进行调度 $cookie_jsessioni 基于 SSESION ID 的 hash$request_uri; 基于 url 的 hashupstream flask { # hash $cookie_jsession; hash $request_uri; server 172.20.0.11:80; server 172.20.0.12:80;}不难发现,如果心愿一个用户的所有申请都路由到一台上游服务时,必须依赖于 SESSION_ID。如果客户端不反对 Cookie、URL 长度还受限制,或者上游服务器压根是一台动态服务器,那么记录用户和上游服务器映射关系的工作就要前置到 Nginx 上了。sticky 模块就是专门用作这样的场景。 ...

July 6, 2022 · 11 min · jiezi

关于nginx:Nginx-实战核心知识点整理下

Nginx 作为一款高性能的代理软件,在工作中常被用做负载均衡器、正向反向代理。最近在看了一个对于 Nginx 的视频,老师讲得很不错。笔者也记录了一下整套课程的一些重点和本人的了解。 上篇:https://segmentfault.com/a/11... 上篇次要跟大家讲述了一下如果应用 Nginx,也是为下篇进行铺垫。接下来的内容能让读者手上的 Nginx 施展最大作用。 思维导图那咱们开始吧! sticky 维持状态上篇介绍了几种调度算法,咱们一起回顾一下外面的 ip_hash 和 url_hash ip_hash:对于紧急扩容场景,应用这种策略可能疾速引入新节点,但如果后端服务忽然宕机会造成状态失落,能够应用 Global Session 的形式解决(引入 Spring Session + Redis)。但后端服务数量太多也会对外置的 Redis 造成压力。 upstream flask { ip_hash; server 172.20.0.11:80; server 172.20.0.12:80;}比方 ERP 零碎应用 URL 哈希比拟适合,因为对于一个企业,多个用户收回的申请达到路由器后都会转换成同一个 IP,容易造成流量歪斜。考试零碎也是雷同情理。url_hash:对于不反对 Cookies 的场景,个别会把 JSESSION_ID 放到 URL 中,这时候能够应用 url_hash 进行调度 $cookie_jsessioni 基于 SSESION ID 的 hash$request_uri; 基于 url 的 hashupstream flask { # hash $cookie_jsession; hash $request_uri; server 172.20.0.11:80; server 172.20.0.12:80;}不难发现,如果心愿一个用户的所有申请都路由到一台上游服务时,必须依赖于 SESSION_ID。如果客户端不反对 Cookie、URL 长度还受限制,或者上游服务器压根是一台动态服务器,那么记录用户和上游服务器映射关系的工作就要前置到 Nginx 上了。sticky 模块就是专门用作这样的场景。 ...

July 6, 2022 · 11 min · jiezi

关于nginx:Nginx-实战核心知识点整理上

Nginx 作为一款高性能的代理软件,在工作中常被用做负载均衡器、正向反向代理。最近在看了一个对于 Nginx 的视频,老师讲得很不错。笔者也记录了一下整套课程的一些重点和本人的了解。 笔者学习习惯是先实战后实践,所以本文次要偏实战,心愿读者能够通过本文疾速搭建 Nginx,并尝试应用它的个性。对于 Nginx 的运行原理、外围模块、源码剖析等内容可能要等下次了(其实是笔者学艺不精,临时看不太懂),大家感兴趣能够先看看其余优质文章。 思维导图那咱们开始吧! 筹备工作Nginx 是什么这里就不赘述了,置信大家都用过,Nginx 目前的发行版本如下: Nginx 开源版Nginx Plus:F5 基于 Nginx 开源版开发的商业版本Openresty:国人开发,整合了 lua 模块Tengine:淘宝基于开源版革新,通过双十一验证本文次要讲述开源版的 Nginx 和 Openresty 开源版 疾速装置大家到 nginx.com 下载一下源码包,解压编译装置 # 装置依赖$ yum install -y pcre pcre-devel$ yum install -y zlib zlib-devel# 解压编译$ tar -zxf nginx-1.21.6.tar.gz$ ./configure --prefix=/usr/local/nginx$ make && make install编写一下 service 文件,不便操作 $ cat <<EOF >> /usr/lib/systemd/system/nginx.service[Unit]Description=nginx - web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopExecQuit=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.targetEOF$ systemctl daemon-reload$ systemctl start nginx.service$ ystemctl enable nginx.service# 当前重启 nginx 只须要$ systemctl restart nginx# 从新加载配置$ systemctl reload nginx配置文件在 conf/nginx.conf,简化一下 ...

July 5, 2022 · 5 min · jiezi

关于nginx:nginx中fastcgiparams文件及相应配置

在ubuntu服务器装置完php7.4-fdm和nginx后,发现fastcgi_params没有生成,也可能是二次装置的关系。所以长期去网上找了个手工建上。特意在这里记录下,防止下次再遇到同样的问题。 #脚本文件申请的门路,也就是说当拜访127.0.0.1/index.php的时候,须要读取网站根目录上面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下拜访.php文件,所以返回空白fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#申请的参数;如?app=123fastcgi_param QUERY_STRING $query_string;#申请的动作(GET,POST)fastcgi_param REQUEST_METHOD $request_method;#申请头中的Content-Type字段fastcgi_param CONTENT_TYPE $content_type;#申请头中的Content-length字段。fastcgi_param CONTENT_LENGTH $content_length;#脚本名称fastcgi_param SCRIPT_NAME $fastcgi_script_name;#申请的地址不带参数fastcgi_param REQUEST_URI $request_uri;#与$uri雷同。 fastcgi_param DOCUMENT_URI $document_uri;#网站的根目录。在server配置中root指令中指定的值fastcgi_param DOCUMENT_ROOT $document_root; #申请应用的协定,通常是HTTP/1.0或HTTP/1.1。 fastcgi_param SERVER_PROTOCOL $server_protocol;#cgi 版本fastcgi_param GATEWAY_INTERFACE CGI/1.1;#nginx 版本号,可批改、暗藏fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;#客户端IPfastcgi_param REMOTE_ADDR $remote_addr;#客户端端口fastcgi_param REMOTE_PORT $remote_port;#服务器IP地址fastcgi_param SERVER_ADDR $server_addr;#服务器端口fastcgi_param SERVER_PORT $server_port;#服务器名,域名在server配置中指定的server_namefastcgi_param SERVER_NAME $server_name;#可自定义变量#fastcgi_param PATH_INFO $path_info;#PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param REDIRECT_STATUS 200;此外还须要在站点配置里增加 location ~ \.php$ { root /usr/share/nginx/html/www; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

June 30, 2022 · 1 min · jiezi

关于nginx:使用-NGINX-和-NGINX-Plus-实现智能高效的字节范围缓存

作者: F5的欧文加勒特 产品治理高级总监2016 年 1 月 21 日 正确部署后,缓存是减速 Web 内容的最快捷方式之一。缓存不仅使内容更凑近最终用户(从而缩小提早),还缩小了对上游源服务器的申请数量,从而进步了容量并升高了带宽老本。 AWS 等寰球分布式云平台和 Route 53 等基于 DNS 的寰球负载平衡零碎的可用性使您能够创立本人的寰球内容交付网络 (CDN)。 在本文中,咱们将理解NGINX 开源和NGINX Plus如何缓存和交付使用字节范畴申请拜访的流量。一个常见的用例是 HTML5 MP4 视频,其中申请应用字节范畴来实现特技播放(跳过和搜寻)视频播放。咱们的指标是实现反对字节范畴的视频传输缓存解决方案,并最大限度地缩小用户提早和上游网络流量。 编者:在 NGINX Plus R8 中引入了一一切片填充缓存切片中探讨的缓存切片办法。无关该版本中所有新性能的概述,请参阅咱们博客: NGINX Plus R8 发版。 咱们的测试框架咱们须要一个简略的、可重现的测试框架来钻研应用 NGINX 进行缓存的代替策略。 一个简略、可反复的测试平台,用于钻研 NGINX 中的缓存策略 咱们从一个 10-MB 的测试文件开始,其中蕴含每 10 个字节的字节偏移量,以便咱们能够验证字节范畴申请是否失常工作: origin$ perl -e 'foreach $i ( 0 ... 1024*1024-1 ) { printf "%09d\n", $i*10 }' > 10Mb.txt文件中的第一行如下: origin$ head 10Mb.txt000000000000000010000000020000000030000000040000000050000000060000000070000000080000000090对文件中的两头字节范畴(500,000 到 500,009)的 curl 申请会返回预期的字节范畴: ...

June 30, 2022 · 3 min · jiezi

关于nginx:Ngin配置允许访问文件目录

location中配置如下 location / { # 容许拜访文件目录 autoindex on; # 按MB、GB展现文件大小, 配置on则按bytes展现文件大小 autoindex_exact_size off; # 应用本地工夫 autoindex_localtime on; # 文件门路 root /www/wwwroot/www.walmart.com;}在server中配置编码 charset utf-8,gbk;残缺配置 server { listen 80; server_name www.walmart.com; root /www/wwwroot/www.walmart.com; index index.html index.htm default.php default.htm default.html; #charset koi8-r; gzip on; gzip_buffers 32 4K; gzip_comp_level 6; gzip_min_length 2K; # 容许音讯头带_下划线 underscores_in_headers on; access_log logs/walmart.access.log combined; charset utf-8,gbk; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; root /www/wwwroot/www.walmart.com; index index.html index.htm; }}

June 27, 2022 · 1 min · jiezi

关于nginx:记录一个-NginxFastCGIPrimary-script-unknown-错误

公司配置了新电脑,M1 的MacBook Air,尽管屏幕小,然而性能目前看能够,于是就要装新环境。 nginx和PHP环境都装好了,而后一运行就报错File not found,看了nginx谬误日志之后,各种搜寻找了解决方案都不行,一说文件权限问题,一说是php-fpm的权限问题,还有可能是nginx的问题。 我寻思了一下,前几年我用MacBook Pro的时候,也是用brew装置的环境啊,也没出啥大问题,尽管这两年换了windows,起初没法子,思来想去的,也在nginx配置文件里间接把配置的fastcgi_param SCRIPT_FILENAME打印进去,也没发现问题,和料想的一样。事件到这就发展不上来了。 而后我思来想去啊,这个权限问题,那么权限我也配置了,看了下运行时候的用户组预计和我以后的用户组不一样,而后再看我的fastcgi_param SCRIPT_FILENAME文件指向配置。我为了省事用了~/projects。而后我寻思了下是不是以运行时候检测~/这个值有谬误,自身来说在我以后的环境代表的是/Users/张三,在运行时候会不会变成/Users/李四?硬着头皮试了下,成了,事件就是这么简略的解决了,心态崩了。 最初换成绝对路径就行,也算是长个教训吧,有些司空见惯的货色放到配置文件里可能就是个大坑。

June 15, 2022 · 1 min · jiezi

关于nginx:Nginx-配置和性能调优

优化 Nginx worker 过程数Nginx 有 master 和 worker 两种过程,master 过程用于治理 worker 过程,worker 过程用于 Nginx 服务。 worker 过程数默认为 1 。 worker_processes 1;worker 过程数应该设置为服务器 CPU 的核数。 [root@localhost ~]# grep -c processor /proc/cpuinfo # 查看CPU核数2[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf # 设置worker过程数worker_processes 2;worker_processes 这个参数最好是设置成 auto 主动匹配过程数。 绑定 Nginx 过程到不同的 CPU 上默认状况下,Nginx 的多个过程有可能跑在某一个 CPU 或 CPU 的某一核上,导致 Nginx 过程应用硬件的资源不均,因而绑定 Nginx 过程到不同的 CPU 上是为了充分利用硬件的多 CPU 多核资源。 [root@localhost ~]# grep -c processor /proc/cpuinfo # 查看CPU核数2worker_processes 2; # 2核CPU的配置worker_cpu_affinity 01 10;worker_processes 4; # 4核CPU的配置worker_cpu_affinity 0001 0010 0100 1000; worker_processes 8; # 8核CPU的配置worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 1000000;优化 Nginx 单个过程容许的最大连接数管制 Nginx 单个过程容许的最大连接数的参数为 worker_connections ,这个参数要依据服务器性能和内存使用量来调整。 ...

June 15, 2022 · 5 min · jiezi

关于nginx:nginx入门1旧笔记誊抄

1.简介1.1 过程有一个master过程:读取、评估conf;保护worker过程;有多个worker过程:解决申请; 1.2 nginx过程模型nginx采纳事件驱动模型和操作系统机制来实现申请散发worker过程; 1.3 工作过程数worker工作过程在conf中配置、也可由CPU外围数主动调整 worker_processor number|auto; // 默认是number; 如果是auto,则默认CPU核数1.4 配置文件地位配置文件:nginx.conf 位于: /usr/local/nginx/conf/usr/local/etc/nginx/etc/nginx1.5 start stop reload1.5.1 通过nginx -s (signal) 发信号来操作signal=> stop: 疾速终止quit: 优雅终止reload: 重加载配置reopen: 从新关上日志文件1.5.2 进行nginx nginx -s quit 期待worker过程解决完以后申请后进行nginx nginx -s stop 立即进行nginx过程 1.5.3 从新加载配置nginx -s reload master过程收到reload操作指令后: 查看配置语法合法性;利用配置;若利用配置胜利,master过程开启新的worker过程并发信息给旧的worker过程申请他们进行;若利用配置失败,主过程回滚,仍应用旧的worker过程工作;旧的worker过程收到一个master的shutdown命令,会进行接管新的连贯,但持续退役完手上的以后申请。而后,旧的worker过程退出。1.5.4 列出所有的nginx过程ps -ax|grep nginx 2.配置文件构造2.1 模块nginx由模块组成,这些模块由配置文件中的指令管制。指令分为简略指令和块指令。 2.2 简略指令由名称和参数组成(两头用空格),并以分号(;)完结。 2.3 块指令与简略指令有雷同的构造,但它用一对大括号{}来突围而不是分号(;)完结。 2.4 上下文如果块指令能够在大括号内蕴含其余指令,它(块)就被称作上下文。例如 events, http, server, location2.5 main上下文在其余上下文之外的指令,被认为是main上下文(主上下文) events和http指令,属于main上下文;server属于http上下文;location属于server上下文;2.6 "#"井号之后的行内内容为正文3. 服务动态内容3.1 文件一个动态html /data/www ->index.html一个图片 /data/images *.jpg 3.2 构造http { server { location / { root /data/www; } }}location的"/"将会与URI中的申请地址相比拟,匹配到,就会从root指定的门路中来定位申请信息: ...

June 9, 2022 · 1 min · jiezi

关于nginx:K8s-网关选型初判Nginx-还是-Envoy

简介: 本文将从性能和老本、可靠性、安全性 3 方面,对两大开源实现进行比对,心愿对正在做 K8s 网关选型的企业有所借鉴。作者:张添翼(澄潭) 为了防止混同,咱们先对一些要害定义做一些厘清: 传统网关:未作容器化革新,未启用 K8s,通过流量网关与业务网关两层网关来构建,流量网关提供全局性的、与后端业务无关的策略配置,例如 Tengine 就是典型的流量网关;业务网关提供独立业务域级别的、与后端业务紧耦合策略配置,随着利用架构模式从单体演进到当初的散布式微服务,业务网关也有了新的叫法 - 微服务网关。 K8s 网关:即云原生网关,也被称为下一代网关,Ingress 成为 K8s 生态的网关规范,促使流量网关和业务网关,合二为一。基于 Ingress 标准的实现次要分为基于 Nginx 和基于 Envoy 两大阵营,基于 Nginx 的 Nginx Ingress Controller 是目前大多数 K8s 集群的抉择,基于 Envoy 的实现作为后起之秀,大有赶超之势。 MSE 云原生网关:是基于 Envoy,做了深度优化的云上服务。 本文将从性能和老本、可靠性、安全性 3 方面,对两大开源实现进行比对,心愿对正在做 K8s 网关选型的企业有所借鉴。 性能和老本 MSE 云原生网关的吞吐性能简直是 Nginx Ingress Controller 的一倍,尤其是传输小文本时性能劣势会更显著,如下图所示,网关 CPU 使用率达到 30% 时的吞吐比照: 编辑 切换为居中增加图片正文,不超过 140 字(可选) 网关规格:16 核 32 G * 4 节点ECS 型号:ecs.c7.8xlarge 当 CPU 负载升高时,吞吐差距会更加显著,下图是 CPU 使用率达到 70% 时的状况: ...

June 9, 2022 · 2 min · jiezi

关于nginx:nginx正则表达式

nginx正则匹配阐明: 细则: 前缀匹配优先其中,最长匹配优先而后,按配置程序匹配正则,正则第一个匹配到后终止无正则匹配,则用后面记住的前缀"=" 准确匹配,匹配后终止"~" 辨别大小写匹配,匹配第一个后终止:~ ^.+.txt$ 辨别大小写匹配".txt""!~" 辨别大小写,非匹配"~*" 不辨别大小写匹配~* .(gif|jpg|jpeg)$"!~*" 不辨别大小写,非匹配"^~" 不查看正则"/" 通用匹配,任何申请都会匹配到

June 9, 2022 · 1 min · jiezi

关于nginx:nginx之upstream模块旧笔记暂存

nginx模块三大类:1.handle 2.filter 3.upstream其中1和2可在任何单机工作;3是逾越单机限度,实现网络接管解决转发; upstream test { ip_hash; // down 与其配合应用(暂时性宕机) server 192.168.0.1; server 192.168.0.2;}外围指令ip_hash只能在upstream{}中应用。 它示意nginx应用ip hash负载平衡算法。如果没有ip_hash指令,nginx应用Round Robin负载平衡模块。 nignx 1.3.1之前不能在ip_hash中使用权重weight 轮询(默认) 每个申请按工夫程序逐个调配到后端weight 指定轮询几率, weight和拜访比率成正比ip_hash 每个申请按ip hash后果调配,解决session问题(有局限)fair 按后端服务器的响应工夫调配,短时响应的后端节点优先url_hash

June 9, 2022 · 1 min · jiezi

关于nginx:nginx配置proxypass后斜杠的访问

1. proxy_pass斜杠或斜杠后缀结尾不带locationproxy_pass 后无"/"或 "/xx" 则蕴含location中的原串;proxy_pass 后没有任何url门路信息(比方 "/", "/xx")则反向代理地址会蕴含location局部;否则,只会拼接匹配后的残余门路。location /online/wxapi/proxy_pass http://localhost:8080/拜访 "http://www.x.com/online/wxapi/a.html" 会拜访: http://localhost:8080/a.htmllocation /online/wxapi/proxy_pass http://localhost:8080拜访 "http://www.x.com/online/wxapi/xx.html" 会拜访 http://localhost:8080/online/...2.总结:你加"/" 拜访时就不加location;你不加"/"拜访时它给你加location;

June 9, 2022 · 1 min · jiezi

关于nginx:在nginx中使用proxy-protocol协议

简介咱们曾经介绍了haproxy提出的proxy protocol协定,通过proxy protocol协定,服务器端能够取得客户端的实在IP地址和端口,从而能够进行一些十分有意义的操作。 为什么取得客户端的实在IP地址会十分有意义呢? 思考一个藏在proxy背地的数据库,如果有多个客户端通过proxy进行数据库的连贯,事实上因为都是通过代理进行连贯,所以数据库中的所有的操作都是proxy服务器的IP地址,这在对数据库的性能监控和优化是不利的,因为咱们不晓得实在异样的服务器IP地址。 这种状况下就须要用到proxy protocol协定,让数据库能够反映出实在客户端的IP地址,从而便于数据库的监控和问题定位。 事实上,数据库只是一个特定的例子,咱们在很多其余的状况下也可能须要晓得客户端实在IP的状况。 以当初最风行的http服务器和代理服务器nginx为例,咱们来看一下如何在nginx中配置proxy protocol。 proxy protocol在nginx中利用咱们晓得nginx是一个web服务器和代理服务器,它个别工作在proxy server或者负载平衡软件(Haproxy,Amazon Elastic Load Balancer (ELB)的前面。 客户端首先申请proxy server或者LSB负载平衡软件,而后再到nginx进行实在的web拜访。 因为通过了多层软件,所以客户端的一些信息比方ip地址,端口号等可能就会被暗藏,这对于咱们问题剖析,数据统计都是不利的。因为对于nginx来说,咱们心愿可能取得实在的客户端IP地址,这样能力获取实在的申请环境。 这种状况下就须要用到PROXY protocol了。 如果后面所说的proxy或者LSB都实现了PROXY protocol协定的话,不论是HTTP, SSL, HTTP/2, SPDY, WebSocket 还是 TCP协定,nginx都能够拿到客户端的原始IP地址,从而依据原始IP地址进行一些非凡的操作,比方屏蔽歹意IP的拜访,依据IP不同展现不同的语言或者页面,或者更加简略的日志记录和统计等,都十分无效。 当然,如果想要反对PROXY protocol,对nginx的版本也是有要求的,具体版本需要如下: 想要反对PROXY protocol v2,须要NGINX Plus R16或者NGINX Open Source 1.13.11。想要反对ROXY protocol for HTTP,须要NGINX Plus R3或者NGINX Open Source 1.5.12。想要反对TCP client‑side PROXY protocol,须要NGINX Plus R7或者 NGINX Open Source 1.9.3。想要反对PROXY protocol for TCP,须要NGINX Plus R11 或者 NGINX Open Source 1.11.4。在nginx中能够通过上面的变量来取得对应的客户端信息,具体而言如下所示: $proxy_protocol_addr和$proxy_protocol_port 别离示意的是原始客户端的IP地址和端口号。 ...

June 8, 2022 · 1 min · jiezi

关于nginx:springboot多个项目Knife4j无法访问文档nginx配置即可

knife4j生成的文档默认拜访形式是/doc.html,但上测试线后就无奈间接拜访,其实只须要下nginx即可: user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events { worker_connections 768; # multi_accept on;}http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 80; server_name 175.178.109.82; index index.php index.html index.htm; location /api/admin/v1 { proxy_pass http://127.0.0.1:7001/api/admin/v1; # 转发规定 proxy_set_header Host $proxy_host; # 批改转发申请头,让8080端口的利用能够受到实在的申请 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /api/mini/v1 { proxy_pass http://127.0.0.1:7002; # 转发规定 proxy_set_header Host $proxy_host; # 批改转发申请头,让8080端口的利用能够受到实在的申请 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 配置mini的接口文档 location /mini/doc/ { proxy_pass http://127.0.0.1:7002/; # 转发规定 如果/mini/doc不加/会拼成这样 http://127.0.0.1:7002/docdoc.html proxy_set_header Host $proxy_host; # 批改转发申请头,让8080端口的利用能够受到实在的申请 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 配置mini的接口文档 location /admin/doc/ { proxy_pass http://127.0.0.1:7001/; proxy_set_header Host $proxy_host; # 批改转发申请头,让8080端口的利用能够受到实在的申请 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}#mail {# # See sample authentication script at:# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript# # # auth_http localhost/auth.php;# # pop3_capabilities "TOP" "USER";# # imap_capabilities "IMAP4rev1" "UIDPLUS";# # server {# listen localhost:110;# protocol pop3;# proxy on;# }# # server {# listen localhost:143;# protocol imap;# proxy on;# }#}

June 7, 2022 · 2 min · jiezi

关于nginx:CentOS8中配置RAID磁盘阵列

RAID有不同的级别,每个级别都有不同的用处和利用。本文介绍RAID 1的应用。应用RAID 1,数据实时镜像到另一个磁盘上。因而,这种RAID办法通常称为磁盘镜像。RAID 1的次要长处是RAID中的一个磁盘呈现故障,另一个磁盘将持续工作。更换故障磁盘时,新磁盘将主动同步数据。RAID 1能够增加热备盘,其中一个磁盘呈现故障,主动替换。 零碎信息Centos8 RAID磁盘: Device Size/dev/sda 20GB/dev/sdb 20GB/dev/sdc 20GB/dev/sdd 20GB装置mdadm[root@localhost ~]# yum -y install mdadmCentos8中配置RAID1磁盘阵列Centos8中配置RAID1磁盘阵列 创立RAID 1阵列首先给/dev/sd[a-d]这四个磁盘分区,每个磁盘的第一个分区给2G的空间来做RAID 1阵列,这里就不演示分区过程了。Centos8中配置RAID1磁盘阵列Centos8中配置RAID1磁盘阵列上面创立RAID 1: [root@localhost ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1Centos8中配置RAID1磁盘阵列Centos8中配置RAID1磁盘阵列下面的参数解释: --create / -C创立一个新的阵列--level= / -l指定RAID的级别,目前反对raid0,1,4,5,6,10--raid-devices= / -n指定磁盘的数量须要要查看RAID配置的话,请执行以下命令: [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 2094080 blocks super 1.2 [2/2] [UU] unused devices: RAID配置不是永久性的,并且在计算机重新启动后会失落。咱们必须创立一个配置文件并在其中增加RAID相干信息: [root@localhost ~]# mdadm --detail --scan > /etc/mdadm.confCentos8中配置RAID1磁盘阵列Centos8中配置RAID1磁盘阵列将创立好的/dev/md0设施格式化为XFS文件系统,并挂载: [root@localhost ~]# mkdir /data[root@localhost ~]# mkfs.xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=4, agsize=130880 blks ...

May 31, 2022 · 3 min · jiezi

关于nginx:Centos安装Nginx参数

./configure -prefix=/usr/local/nginx-1.21.6 --with-http_gzip_static_module --with-stream --with-http_ssl_module

May 26, 2022 · 1 min · jiezi

关于nginx:提升博客的加载速度

开启Nginx的gzip和缓存server{ gzip on; gzip_buffers 32 4K; gzip_comp_level 6; gzip_min_length 100; gzip_types application/javascript text/css text/xml; gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,反对正则。此处示意ie6及以下不启用gzip(因为ie低版本不反对) gzip_vary on;}expires 1h; preload前端动态资源<script rel="preload" src=“xxx”>

May 15, 2022 · 1 min · jiezi

关于nginx:通过nginx代理部署golang-ApiServer

server { listen 80; server_name domain.com; send_timeout 6000; charset utf-8; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass_request_headers on; proxy_pass http://127.0.0.1:3000; }

May 9, 2022 · 1 min · jiezi

关于nginx:Linux-中的-JQ-命令使用实例

JSON 是一种数据表示格局,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,咱们将学习应用 JQ 命令在shell 中操作和解决 JSON 数据。如何装置JQ命令在Centos8中应用上面命令装置jq: [root@localhost ~]# dnf -y install jqLinux 中的 JQ 命令应用实例Linux 中的 JQ 命令应用实例 语法当初咱们能够开始应用 JQ 命令,因为它曾经胜利装置在咱们的零碎上,但首先,让咱们看一下 JQ 命令的语法: jq [options] [file...] jq [options] --args [strings...] jq [options] --jsonargs [JSON_TEXTS...]JQ 命令能够用多种不同的形式应用;它能够间接用于 JSON 文件,也能够联合其余几个命令来解释 JSON 数据。JQ 命令能够与不同的过滤器一起应用,例如“.”、“|”、“,”或“.[]”过滤器来组织 JSON 数据。 JQ 命令还采纳不同的选项作为参数,例如 --tab、--stream、--indent n、--unbuffered 和 -L 目录选项。JQ 命令的语法乍一看可能很简单,但浏览整篇文章后您就会相熟它。 如何应用 JQ 命令组织 JSON 数据JQ 命令过滤器最简略和罕用的个性。它们用于在将 JSON 数据打印到规范输入时对其进行组织和丑化。 在这个例子中,咱们有一个名为 employee.json 的 JSON 文件,咱们须要将数据输入到规范输入: {"workers":{"name": "John Brooks","id": "003"}}咱们能够应用 cat 命令来显示数据: ...

May 7, 2022 · 2 min · jiezi

关于nginx:从Nginx源码看优雅阅读源码的姿势

前述Nginx: 1.21.7Os: unix 简略理解我的项目目录构造auto我的项目编译相干脚本conf我的项目配置contrib我的项目奉献docs我的项目文档misc杂项src我的项目源码core外围模块event事件模块,次要用于实现Nginx不同事件的解决逻辑httphttp服务模块,次要用于http服务的具体解决逻辑mailmail服务模块,次要用于mail服务的具体解决逻辑misc杂项os零碎模块,次要解决雷同逻辑在不同零碎下的交互流程streamstream服务模块,次要用于stream服务的具体解决逻辑粗读我的项目解决流程浏览思路寻找main入口if判断流程暂不波及外部具体解决流程,可先通过办法名猜想外部逻辑(办法名有歧义或不清晰的能够进入下一级简略理解外部逻辑)画图剖析我的项目架构设计思路及外围逻辑粗读外围逻辑外围逻辑梳理(简版)Nginx源码之main Nginx源码之ngx_master_process_cycle ngx_worker_process_cycle 细读我的项目外围解决流程浏览思路针对粗读的我的项目架构,拆解外围办法的外部逻辑善用全局搜寻善用man命令查看零碎函数学习我的项目架构设计模式外围逻辑梳理(具体版)事件处理流程 模块解决流程 补充浏览:《NGINX源码浏览》《Nginx HTTP申请解决流程》By佐柱 转载请注明出处,也欢送偶然逛逛我的小站,谢谢 :)

May 6, 2022 · 1 min · jiezi

关于nginx:Nginx常用配置

Nginx自身的配置user:Nginx在装置时创立的用户。Nginx运行时也是以该用户的身份运行的。worker-processes:过程数。举荐设置为处理器/CPU核数。过多或过少都会导致性能降落。error_log:谬误日志地位。 波及到服务器的配置events.worker_connections:一个过程能持有的连接数。依据网站的并发量设置。 http配置:服务器的次要配置access_log:网站的拜访日志。include:存在多个域名时,能够拆分为不同配置文件,用include蕴含拆分的配置文件。主动生成的配置文件中,include蕴含对服务器的默认配置default.conf。default.conf;蕴含一个server配置块。server.server_name:用于指定域名(如example.com www.example.com示意拜访example.com或www.example.com),默认为localhost。用于实现基于名称的虚构服务器。一个服务器中可能运行多个网站,要为不同网站指定不同配置文件,能够在不同配置文件的server_name中指定不同名称。server.location:用于将不同的门路拜访路由到不同文件。如 # 拜访不带门路的域名时,root门路下的index.html会被返回给用户。location / { # 如果在windows上,则root为绝对路径,如D:\dev\React root /usr/share/nginx/html; index index.html}Linux命令行systemctl restart nginx:重启nginxsystemctl status nginx:查看nginx状态systemctl reload nginx:从新加载配置文件,但不重启nginxsystemctl stop nginx:进行nginxsystemctl start nginx:启动nginx 单页面利用跳转配置问题:单页面利用只有index.html一个界面文件,其余界面通过前端路由。但浏览器在刷新或应用window.location.href跳转时,仍会向nginx发送申请,此时nginx无奈找到门路对应的文件,会显示404。解决: location / { root ... index index.html # 无论root是什么门路,这里的最初一项都能够间接写/index.html try_files $uri /index.html;}try_files:按指定程序查找文件,并用找到的第一个文件解决申请。语法如下: try_files file1 file2 ... uritry_files file1 file2 ... =code其中,参数file1、file2是用于查找文件的门路(绝对于root的相对路径)。filex能够应用$uri,示意申请的门路和文件名。应用第一种语法时,如果所有filex参数指定的门路都没有找到文件,则外部向uri指定的门路发送申请(依据server_name指定的域名);应用第二种语法时,如果所有filex指定的文件都未找到,则返回code指定的响应码(如404)。详见。因而,上文解决单页面刷新/跳转404的配置示意,如果申请为localhost/login,则先在root指定的地址中查找/login文件,如果文件不存在,则在外部向localhost/index.html发送申请,并将后果返回给用户。

May 5, 2022 · 1 min · jiezi

关于nginx:跨域问题很难吗来教你使用-Nginx-反向代理轻松解决

当你遇到跨域问题,不要立即就抉择复制去尝试。请具体看完这篇文章再解决,我置信它能帮到你。 筹备前端网站地址:http://localhost:8080服务端网址:http://localhost:59200首先保障服务端是没有解决跨域的,其次,先用postman测试服务端接口是失常的 当网站8080去拜访服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种状况都列举进去并通过nginx代理的形式解决(后盾也是一样的,只有你了解的原理)。 跨域次要波及4个响应头Access-Control-Allow-Origin 用于设置容许跨域申请源地址 (预检申请和正式申请在跨域时候都会验证)Access-Control-Allow-Headers 跨域容许携带的非凡头信息字段 (只在预检申请验证)Access-Control-Allow-Methods 跨域容许的申请办法或者说HTTP动词 (只在预检申请验证)Access-Control-Allow-Credentials 是否容许跨域应用cookies,如果要跨域应用cookies,能够增加上此申请响应头,值设为true(设置或者不设置,都不会影响申请发送,只会影响在跨域时候是否要携带cookies,然而如果设置,预检申请和正式申请都须要设置)。不过不倡议跨域应用(我的项目中用到过,不过不稳固,有些浏览器带不过来),除非必要,因为有很多计划能够代替。网上很多文章都是通知你间接Nginx增加这几个响应头信息就能解决跨域,当然大部分状况是能解决,然而我置信还是有很多状况,明明配置上了,也同样会报跨域问题。 什么是预检申请?当产生跨域条件时候,览器先询问服务器,以后网页所在的域名是否在服务器的许可名单之中,以及能够应用哪些HTTP动词和头信息字段。只有失去必定回答,浏览器才会收回正式的XMLHttpRequest申请,否则就报错。如下图 模仿Nginx代理端口:22222 ,配置如下 server { listen 22222; server_name localhost; location / { proxy_pass http://localhost:59200; }}测试代理是否胜利,通过Nginx代理端口2222再次拜访接口,能够看到如下图通过代理后接口也是能失常拜访 接下来开始用网站8080拜访Nginx代理后的接口地址,报错状况如下↓↓↓ 状况1Access to XMLHttpRequest at 'http://localhost:22222/api/Login/TestGet' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 通过错误信息能够很清晰的定位到谬误(留神看标红局部)priflight阐明是个预申请,CORS 机制跨域会首先进行 preflight(一个 OPTIONS 申请), 该申请胜利后才会发送真正的申请。这一设计旨在确保服务器对 CORS 规范知情,以爱护不反对 CORS 的旧服务器 通过错误信息,咱们能够失去是预检申请的申请响应头短少了 Access-Control-Allow-Origin,错哪里,咱们改哪里就好了。批改Nginx配置信息如下(红色局部为增加局部),缺什么就补什么,很简单明了 server { listen 22222; server_name localhost; location / { add_header Access-Control-Allow-Origin 'http://localhost:8080'; proxy_pass http://localhost:59200; } }哈哈,当满怀欢喜的认为能解决后,发现还是报了同样的问题 不过咱们的配置没什么问题,问题在Nginx,下图链接http://nginx.org/en/docs/http... add_header 指令用于增加返回头字段,当且仅当状态码为图中列出的那些时无效。如果想要每次响应信息都携带头字段信息,须要在最初增加always(经我测试,只有Access-Control-Allow-Origin这个头信息须要加always,其余的不加always也会携带回来),那咱们加上试试 server { listen 22222; server_name localhost; location / { add_header Access-Control-Allow-Origin 'http://localhost:8080' always; proxy_pass http://localhost:59200; } }批改了配置后,发现失效了,当然不是跨域就解决了,是下面这个问题曾经解决了,因为报错内容曾经变了 ...

May 5, 2022 · 2 min · jiezi

关于nginx:使用zerotier让异地设备组局域网

当初因为疫情风行居家办公,常常有要和公司的异地网络或者电脑交互的状况。frp的内网穿透只能转发端口,而且配置也有些麻烦。如果有和公司电脑组建内网需要,zerotier就派上用场了。注册zerotier账户关上https://my.zerotier.com/ ,点击 Register ,失常邮箱注册就能够。登录上之后是这个界面 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 创立网络点击显眼的"Create A Network" ,默认会主动创立一个网络。牢记“NETWORK ID” 前面须要用到。 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 生成默认就够了,如果须要更具体的网络配置,比方换个网段,能够在点进去配置一下。 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 装置客户端这里以两个windows设施为例,在 https://www.zerotier.com/down... 页面下载对应的客户端。而后装置。装置好后零碎右下角托盘会呈现zerotier的logo 。 退出子网输出ID鼠标右键托盘里的zerotier logo,抉择“Open contorl panel”关上面板,右边面板显示“Online”示意和Zerotier的服务器连贯胜利,在两头上面填入第一步中在Zerotine网站上创立的子网“NETWORK ID”退出子网。 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 程序会新建一个虚构网卡 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 在zerotier网站上批准设施退出应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 把所有须要组内网的设施进行如上操作全副退出之后会显示IP,这个IP就是调配到各个设施上的Zerotier 局域网 IP。能相互ping通的。局域网组建胜利了,局域网的玩法也都解锁了,比方远程桌面连贯等等 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 应用zerotier让异地设备组局域网应用zerotier让异地设备组局域网 原理原理就是UDP打洞,组建P2P网络。Zerotier服务器作用是把设施的公网IP告诉到各个设施,尝试让各方相互打洞,如果打洞胜利,就是连贯胜利,至于网络品质要取决于运营商。因为国内非凡的网络环境(限度UDP),很容易遇到打洞失败的状况。即便照着教程连贯不上也是失常的。习惯就好。下节讲自建Moon,尝试由Moon握手打洞或者走Moon转发全副流量。

April 23, 2022 · 1 min · jiezi

关于nginx:nginx-proxybuffers-缓冲区配置讲解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 简介缓存有很多种,这里讲的是nginx的缓存。nginx是通过proxy_buffers来实现的。 nginx配置// 先在http模块中设置好proxy_connect_timeout 10;proxy_read_timeout 180;proxy_send_timeout 5;proxy_buffering on;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;proxy_temp_path /data/nginx/cachetemp;proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=480m max_size=1g;// 而后再匹配动态资源来缓存location ~ .(jpg|jepg|png|gif|css|js) { proxy_pass http://localhost:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache cache_one; proxy_cache_valid 200 302 24h; proxy_cache_valid 301 30d; proxy_cache_valid any 5m; expires 90d; // 用于测试缓存否失效 add_header Nginx-Cache 1;}如果重启nginx后,发现没有失效,那能够测试下配置文件是否ok。 命令是:nginx -t -c /etc/nginx/nginx.conf 成果通过响应头咱们能够看到,特意设置的字段,证实缓存失效了。 如下截图所示: 再到机器上查看cache目录。也是能看到缓存的文件的。 详情 请查看:毛毛虫的小小蜡笔

April 20, 2022 · 1 min · jiezi

关于nginx:代理是什么nginx快速入门反向代理hexo个人博客

@TOC 前言什么是nginx?Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。特点是占有内存少,并发能力特地强。nginx作用?http代理,如:正向代理、反向代理 本文阐明 请大家务必查看本文有两个版本,具体版、简洁版。 前者适宜老手,后者适宜新手(不便大家查找,从而过滤掉某些步骤,节约工夫老本) 所以大家按需查看哟。 具体版简洁版简洁版:蕴含所有步骤,以及命令的执行过程(适宜老手) 简洁版:只蕴含命令(适宜有肯定熟练度的人) 工作原理正向代理客户端--->代理服务器--->拜访的域名--->拜访的服务器客户端<---代理服务器<---拜访的域名<---拜访的服务器简略总结:正向代理是到客户端举个栗子:咱们打韩服的LOL有提早,咱们就能够找一个代理(香港的vpn),代理拜访国外的服务器,而后返回给代理,最初返回给咱们。能够了解成加速器。 反向代理客户端--->拜访的域名--->代理服务器--->拜访的服务器客户端<---拜访的域名<---代理服务器<---拜访的服务器简略总结:反向代理是到服务端举个栗子:咱们在拜访百度的时候始终都是www.baidu.com这个域名,其实域名前面有很多服务器(ip地址),拜访域名-->代理服务器后到百度的服务器,最初返回给咱们html页面。 环境筹备零碎VcpuMemory网卡类型centos724NAT模式没有hexo博客环境看这里:还不会搭建博客吗?centos7零碎部署hexo博客新手入门-进阶,看这一篇就够了_小叶的技术Logs的博客-CSDN博客 具体版入门:搭建步骤配置阿里云epel源:[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #下载epel源,否则没有nginx包--2022-04-18 21:54:35-- http://mirrors.aliyun.com/repo/epel-7.repoResolving mirrors.aliyun.com (mirrors.aliyun.com)... 113.207.38.89, 113.207.38.90, 113.207.38.85, ...Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|113.207.38.89|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 664 [application/octet-stream]Saving to: ‘/etc/yum.repos.d/epel.repo’100%[======================================================================================>] 664 --.-K/s in 0s2022-04-18 21:54:36 (131 MB/s) - ‘/etc/yum.repos.d/epel.repo’ saved [664/664]yum装置nginx:[root@localhost ~]# yum install -y nginx #yum装置nginx软件Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.comResolving Dependencies--> Running transaction check---> Package nginx.x86_64 1:1.20.1-9.el7 will be installed--> Processing Dependency: nginx-filesystem = 1:1.20.1-9.el7 for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: nginx-filesystem for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: redhat-indexhtml for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libcrypto.so.1.1()(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libprofiler.so.0()(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64--> Processing Dependency: libssl.so.1.1()(64bit) for package: 1:nginx-1.20.1-9.el7.x86_64启动nginx:[root@localhost ~]# systemctl stop firewalld && systemctl disabel firewalld #敞开防火墙、开机不自启防火墙[root@localhost ~]# setenforce 0 #长期敞开selinux[root@localhost ~]# systemctl start nginx #启动nginx[root@localhost ~]# systemctl enable nginx #开机自启nginx浏览器验证拜访nginx如图所示: ...

April 19, 2022 · 2 min · jiezi

关于nginx:nginx部署

1.拉取镜像,docker pull nginxmkdir nginx2.进入nginx,创立这三个文件夹mkdir certmkdir conf.dmkdir html3.配置nginxdocker run -d --name nginx -p 80:80 -v /root/nginx/html:/usr/share/nginx/html:ro -m 1G nginx4.进入html,touch index.html5.拜访ip看看是否搭建好nginx6.查看docker容器,docker ps -a,删除docker rm Id(查看到的docker容器id)7.配置的default.conf文件

April 19, 2022 · 1 min · jiezi

关于nginx:安全开发运维必备如何进行Nginx代理Web服务器性能优化与安全加固配置看这篇指南就够了

本章目录 1.引言 1.1 目标1.2 指标范畴1.3 读者对象2.参考阐明 2.1 帮忙参考2.2 参数阐明3.3 模块阐明3.服务优化 3.1 零碎内核3.2 编译优化3.3 性能优化3.4 经营优化3.5 配置优化4.平安配置 0.暗藏nginx服务及其版本1.低权限用户运行服务2.配置SSL及其会话复用3.限度SSL协定与加密套件4.拦挡垃圾信息5.歹意扫描拦挡6.禁用WebDAV7.禁用Nginx状态模块8.敞开默认谬误页上的Nginx版本号9.设置client_body_timeout超时10.设置client_header_timeout11.设置keepalive_timeout超时12.设置send_timeout超时13.Nginx可用的办法应限度为GET, HEAD, POST14.管制并发连贯limit_zone slimits15.管制并发连贯limit_conn slimits16.主机防webshell跨目录浏览以及列目录17.文件名解析破绽php_info,退出fcgi.conf即可18.拜访权限管制nginx19.异样状态返回200暗藏URL20.平安模块的抉择21.记录访问者实在IP22.地区拜访响应措施23.资源防盗链设置24.惯例平安响应头配置25.避免非所属域名解析到服务器25.限度指定客户端地址拜访5.配置阐明6.补充常识 <center> 订正管制页 版本订正日期订正人订正摘要1.02019年9月8日 09点18分WeiyiGeek初稿2.02022年1月8日 18点18分WeiyiGeek裁减</center> 前置基础知识学习 1.Nginx根底装置与配置具体 https://blog.weiyigeek.top/20...2.Nginx进阶学习之最佳配置实际指南 https://blog.weiyigeek.top/20...3.Nginx模块学习应用实际指南 https://blog.weiyigeek.top/20...4.Nginx平安加固与性能调优最佳指南 https://blog.weiyigeek.top/20...5.Nginx常遇问题入坑出坑整顿 https://blog.weiyigeek.top/20...1.引言1.1 目标为了更好的领导部署与测试艺术升零碎nginx网站服务器高性能同时下平安稳固运行,须要对nginx服务进行调优与加固; 本次进行Nginx服务调优加固次要从以下几个局部: 模块性能优化零碎内核优化编译装置优化性能参数优化平安加固配置1.2 指标范畴本文档仅供外部应用,禁止外传,帮忙研发人员,运维人员对系统长期稳固的运行提供技术文档参考。 1.3 读者对象1) 项目经理2) 开发人员3) 测试人员4) 运维人员5) 相干领导 2.参考阐明2.1 帮忙参考Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx作为负载平衡服务器, Nginx 既能够在外部间接反对 Rails 和 PHP 程序对外进行服务,也能够反对作为 HTTP代理服务器对外进行服务。 Nginx版本抉择: Mainline version 最新版本,举荐测试的业务我的项目的时候应用Stable version 稳固版本,举荐我的项目上线理论应用Legacy versions 历史版本,不举荐抉择可能存在脆弱性破绽我的项目构造: #编译后的nginx我的项目结构造/etc/nginx/├── client_body_temp #客户端下面的临时文件寄存目录├── conf #nginx的配置文件寄存目录├── fastcgi_temp #fastcgi的临时文件寄存目录├── html #寄存动态资源或者脚本文件的中央├── logs #nginx日志文件├── proxy_temp #nginx正向/反向代理缓存文件寄存目录├── sbin #nginx可执行文件├── scgi_temp #scgi长期文件目录└── uwsgi_temp #uwsgi临时文件寄存目录 ...

April 15, 2022 · 10 min · jiezi

关于nginx:小白入门学习Nginx代理服务器看这篇最新Nginx进阶学习最佳配置实践指南就OK了

<!-- more --> 前置基础知识学习 1.Nginx根底装置与配置具体 https://blog.weiyigeek.top/20...2.Nginx进阶学习之最佳配置实际指南 https://blog.weiyigeek.top/20...3.Nginx模块学习应用实际指南 https://blog.weiyigeek.top/20...4.Nginx平安加固与性能调优最佳指南 https://blog.weiyigeek.top/20...5.Nginx常遇问题入坑出坑整顿 https://blog.weiyigeek.top/20...0x00 编译实际形容:在企业线上生产环境中举荐进行Nginx编译装置,能够依照业务侧重点进行相应 Nginx 编译参数配置,所以编译参数不是性能加的越多越好,应该尽可能少编译模块不必的最好不要退出,本小结将以最新的Nginx版本以及依赖版本进行编译演示。 Nginx-1.21.6+OpenSSL-1.1.1n最新源码构建装置整顿,以后最新版本nginx-1.21.6,实际工夫【2022年3月24日】版本阐明: pcre-8.45 、zlib-1.2.11、openssl-1.1.1n、nginx-1.21.6。 官网装置参考地址: https://docs.nginx.com/nginx/... 步骤 01.在从源代码编译 NGINX Open Source 之前,您须要为其依赖项装置库: PCRE – 反对正则表达式,NGINX Core 和 Rewrite 模块须要。 # http://pcre.org/# https://sourceforge.net/projects/pcre/files/wget -c https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.bz2tar -jxf pcre-8.45.tar.bz2 && cd pcre-8.45./configuremake && sudo make installzlib – 反对标头压缩, NGINX Gzip 模块须要。 # http://www.zlib.net/wget -c http://zlib.net/zlib-1.2.11.tar.gztar -zxf zlib-1.2.11.tar.gz && cd zlib-1.2.11./configuremake && sudo make installOpenSSL – 反对 HTTPS 协定, NGINX SSL 模块和其余模块须要。 ...

April 15, 2022 · 11 min · jiezi

关于nginx:Nginx配置

nginx配置样板http { # ... server { # 监听端口号 listen 443; server_name xxxx; loaction / { root 文件目录 } }}注: 需确保服务器防火墙和平安组都放通拜访端口 部署webpack打包publicPath为 '/' 的dist拜访: http://IP:portlocation / { root C:\Users\Administrator\Desktop\vue-project\emss\dist; index index.html ; try_files $uri $uri/ index.html;}注: 如果前端路由模式为history, 则必须加try_files $uri $uri/ index.html; 部署webpack打包publicPath为'/app'(即蕴含自定义后缀)的dist拜访: http://IP:port/applocation /app { alias C:\Users\Administrator\Desktop\vue-project\app\dist;}注: 此时如果前端我的项目中须要拜访public目录下的文件, 拜访门路应改为: /app/public目录下的文件 后端serve转发(一)后端服务运行在30000端口上, api路由为: /api/v1/xxxx拜访api: http://IP:port/api/v1/xxxxlocation /api { proxy_pass http://127.0.0.1:30000/api; # 或者proxy_pass http://127.0.0.1:30000 }注: 如果仅写到端口号, 则端口号后不加 / 后端serve转发(二)后端服务运行在8803端口上, api路由为: /api/v1/xxxx拜访api: http://IP:port/dmt/api/v1/xxxxlocation /dmt/api { proxy_pass http://127.0.0.1:8803/api;}后端serve转发(三)后端服务运行在30003端口上, api路由为: /aa/bb/xxx拜访api: http://IP:port/chinaTalk/aa/b...location /chinaTalk/ { rewrite ^/chinaTalk/(.*)$ /$1 break; proxy_pass http://119.45.102.83:30003;}转发文件资源拜访后端serve运行在30000端口下, 后端启动动态资源在uploads目录下拜访动态资源: http://IP:port/uploads/文件名location /uploads { proxy_pass http://127.0.0.1:30000/uploads;}应用https域名替换ip端口拜访https必须在443端口下须要拿到https证书文件并放在nginx-1.xx.xx/conf目录下(即nginx.conf所在目录)server { #SSL 拜访端口号为 443 listen 443 ssl; #填写绑定证书的域名 server_name wzctest.wzc520pyf.cn; #证书文件名称 ssl_certificate 1_wzctest.wzc520pyf.cn_bundle.crt; #私钥文件名称 ssl_certificate_key 2_wzctest.wzc520pyf.cn.key; ssl_session_timeout 5m; #请依照以下协定配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请依照以下套件配置,配置加密套件,写法遵循 openssl 规范。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root C:\Users\Administrator\Desktop\vue-project\emss\dist; index index.html ; try_files $uri $uri/ index.html; }}开启前端打包gz压缩反对server { listen 3333; server_name localhost; # compression-webpack-plugin 配置 gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; # 配置禁用 gzip 条件,反对正则,此处示意 ie6 及以下不启用 gzip(因为ie低版本不反对) gzip_disable "MSIE [1-6]\."; #charset koi8-r; #access_log logs/host.access.log main; location / { root C:\Users\Administrator\Desktop\vue-project\emss\dist; try_files $uri $uri/ @router; index index.html index.htm; } location @router { rewrite ^.*$ /index.html last; }}配置属性

April 13, 2022 · 1 min · jiezi

关于nginx:学习nginx1

自我介绍我叫Tom,是一个4年工作教训的前端小学生,自我评估勉强过中级程度,还在一直学习中。近2年始终用的react,对react比拟相熟,但对vue却比拟生疏;不过最近在通过技术胖的视频来学习vue,感觉vue和react相比,尤大大在vue里封装了很多性能,为前端coder进步了极大的效率,前者(vue)是自动挡的车,后者(react)是手动挡。 服务器昨天看到阿里云服务器搞流动,就买了一年的服务器和域名,筹备前期主域名会撘一个博客来记录,不过也有可能是一个一般网站来展现一些内容,设置一个二级域名用来搭建一个属于我和我老婆的小天地。我的学习技术是这样的: 学习nginx搭建部署前端环境学习node作为后端申请数据打算目前所须要的所有技术都向技术胖学习。前端目前还没有思考好写什么我的项目,临时筹备先把nginx环境部署好之后,把之前写的react管理系统我的项目先放上去,胜利后,筹备用vue重构此管理系统。 记录nginx遇到的坑我的服务器装的是centos 8零碎,将nginx部署好后,在阿里云主机上关上80端口,并且在服务器端通过命令行敞开防火墙后,发现页面始终无法访问。执行 ps aux|grep nginx 可看到Nginx服务是否启动通过后果得悉nginx失常启动而后执行 netstat -ntlp 查看80-端口是否被调配给了Nginx,执行后果如下:此时一切正常,但页面始终不进去,通过搜了很多材料后,找到了解决办法第一步,对80端口进行防火墙配置: firewall-cmd --zone=public --add-port=80/tcp --permanent 第二步,重启防火墙服务: systemctl restart firewalld.service 操作完后拜访ip,就能够失常拜访了

March 30, 2022 · 1 min · jiezi

关于nginx:failed-111-Connection-refused-while-connecting-to-upstream

nginx的主配置文件就照着上面配置,基本技能解决问题user root;worker_processes 4; error_log logs/error.log notice; events { worker_connections 65535;} http { 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 logs/access.log main; port_in_redirect off; sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_min_length 5k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 4; gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; keepalive_timeout 65; client_body_timeout 12; client_header_timeout 12; send_timeout 10; include conf.d/*.conf; }上面为之前出问题的nginx配置user root;worker_processes 4;worker_rlimit_nofile 65535;error_log logs/error.log error;events { use epoll; worker_connections 65535;}http { include mime.types; default_type application/octet-stream; log_format main '{"@timestamp":"$time_iso8601",' '"@source":"$server_addr",' '"hostname":"$hostname",' '"ip":"$http_x_forwarded_for",' '"client":"$remote_addr",' '"request_method":"$request_method",' '"scheme":"$scheme",' '"domain":"$server_name",' '"referer":"$http_referer",' '"request":"$request_uri",' '"args":"$args",' '"size":$body_bytes_sent,' '"status": $status,' '"responsetime":$request_time,' '"upstreamtime":"$upstream_response_time",' '"upstreamaddr":"$upstream_addr",' '"http_user_agent":"$http_user_agent",' '"https":"$https"' '}'; access_log logs/access.log main; sendfile on; client_max_body_size 256m; server_tokens off ; proxy_intercept_errors on; keepalive_timeout 30; gzip on; gzip_min_length 5k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 4; gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; include conf.d/*.conf; fastcgi_intercept_errors on;}

March 29, 2022 · 1 min · jiezi

关于nginx:CentOS-Linux-的未来和功能的巨大变化

Red Hat 首席技术官 Chris Wright 和 社区经理 Rich Bowen 各自发表了 CentOS 的将来和性能的巨大变化。展望未来,将不再有 CentOS Linux ——取而代之的是CentOS Stream。概述CentOS Stream 成立于 2019 年,是“RHEL 下一步的滚动预览”。Red Hat 首席技术官 Chris Wright 和 CentOS 社区经理 Rich Bowen 各自发表了 CentOS Linux 的将来和性能的巨大变化。展望未来,将不再有 CentOS Linux ——取而代之的是CentOS Stream。 CentOS Linux 的将来和性能的巨大变化CentOS Linux 的将来和性能的巨大变化 到底什么是 CentOS?CentOS(Community Enterprise Linux Operating System 的缩写)成立于 2004 年。CentOS 2004 年的第一个版本被命名为版本 2——与过后的 RHEL 2.1 相吻合。从那时起,每个 RHEL 次要版本的增量都会导致相应的 CentOS 新的次要版本,遵循雷同的版本控制计划并在很大水平上从雷同的源构建。 传统的 CentOS 是对 Red Hat Enterprise Linux (RHEL) 操作系统的收费重建,由 RHEL 本人的源代码构建,但移除了 Red Hat 的专有品牌,并且没有 Red Hat 商业反对。这使得 CentOS 能够享受与RHEL 的二进制兼容性。 ...

March 17, 2022 · 2 min · jiezi

关于nginx:Nginx-详细教程

Nginx1. 基本概念概述Nginx 是一个高性能的 HTTP 和反向代理服务器特点是占有内存少,并发能力强专为性能优化而开发,性能是其最最要的考量反向代理谈反向代理之前咱们先来理解一下正向代理,比方当初咱们要拜访 www.google.com,谷歌大陆目前是不能间接拜访的,那么咱们就能够通过在浏览器配置代理服务器进行拜访(如下图)接下来咱们介绍反向代理,客户端对代理无感知,客户端不须要任何配置,咱们只须要将申请发送到反向代理服务器,而后由反向代理服务器去抉择指标服务器获取数据后,再返回给客户端。此时反向代理服务器和指标服务器对外就是一个服务器。显然,反向代理对外裸露的是反向代理服务器,暗藏了实在服务器比方下图中,咱们想指标服务器发出请求时,由反向代理服务器抉择 tomcat 服务器 8001 端口,获取数据后,再将数据返回给客户端负载平衡客户端发送多个申请到服务器,服务器与数据库交互解决申请,处理完毕后,再将后果返回给客户端这种架构模式实用于晚期零碎繁多简略,并发较少的状况。随着信息数量的一直增长,访问量和申请量的飞速增长,服务器性能就会达到瓶颈,此时咱们应该如何解决?首先想到的是晋升服务器的配置,然而随着摩尔定律的日益生效,硬件的性能晋升曾经不能满足日益晋升的性能需求。另外一个办法是咱们能够减少服务器的数量,将申请散发到各个服务器上,这就是咱们说的 负载平衡如下图,将 15 个申请散发到三台服务器上,现实状态是每台服务器 3 个申请动静拆散为了放慢网站的解析速度,能够把动静页面和动态页面由不同的服务器来解析,放慢解析速度,升高原来单个服务器的压力2. Nginx 装置、命令和配置文件Linux 中装置 Nginx装置 PCRE PCRE 作用是让 Nginx 反对 Rewrite 性能。cd /usr/src/wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz tar zxvf pcre-8.37.tar.gz cd pcre-8.37/./configuremake && make install pcre-config --version 装置编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 装置 Nginx cd /usr/src/wget http://nginx.org/download/nginx-1.12.2.tar.gz tar zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2/./configuremake && make install /usr/local/nginx/sbin/nginx -v 装置胜利后,在 usr 多进去一个文件夹 local/nginx,启动脚本为 /nginx/sbin/nginx测试 ...

March 15, 2022 · 5 min · jiezi

关于nginx:Nginx三

一、Nginx动静拆散什么是动静拆散 就是将动静的资源与动态的资源文件进行拆散,如图: 目标 解决因为动态资源和动静资源竞争CPU导致的性能问题。 场景 次要的应用场景是 Web我的项目中应用。 比方:查问某个商品列表的页面,如图: 商品列表页面初始化的时候,会加载Js和Css文件和数据库中的商品数据。 前提:并发量比拟大,动静资源将cpu和内存等资源耗尽,导致动态资源无法访问,所以将我的项目中的动态资源进行拆分。 实例我的项目 条件 Net5环境的 mvc我的项目Nginx实例 新建Web我的项目,动态资源未分离的状态,如图: 运行Nginx 如图: 我的项目运行后如图:-动态资源拆分 将我的项目中动态资源【wwwroot】拆分到其余文件夹中,新建一个StaticResource文件夹,如图: 因我的项目中没有了动态资源文件,导致页面布局凌乱,如图: ![在这里插入图片形容](https://img-blog.csdnimg.cn/b3e5aa153a2642a2ae237c185b8421c6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQEDnpZ7lhpw=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 所以须要在Nginx服务器中配置动态文件,配置代码如下: ```yaml #配置动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root 动态资源门路; } # ~ 代表优先匹配动态资源 ``` 整体配置如下: ```yaml #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 动态数据 location / { proxy_pass http://Demo.Application; } #代理 动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root D:/StaticResource/wwwroot; } } #负载平衡(分流配置) upstream Demo.Application{ least_conn; server localhost:5000; server localhost:5001; } } ``` 运行后果如图: ![在这里插入图片形容](https://img-blog.csdnimg.cn/2a15fbf4618545e89035c405a51df632.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQEDnpZ7lhpw=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 依照以上的nginx配置,动态数据与动态资源还是共享CPU资源的 ,那么仍然没有解决当并发量过大,动静资源将cpu和内存等资源耗尽,导致动态资源无法访问的问题,所以咱们要将动态数据和动态资源放在不同的虚拟主机中,配置代码如下: ```yml worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #加载动态数据 server { listen 801; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 location / { proxy_pass http://Demo.Application; } } #用来合并 动态数据和动态资源 server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 动态数据 location / { proxy_pass http://localhost:801; } #代理 动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { proxy_pass http://localhost:802; } } #加载动态资源 server { listen 802; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root D:/StaticResource/wwwroot; } } #负载平衡(分流配置) upstream Demo.Application{ server localhost:5001; } } ``` 依照以上的建设两个不同的虚拟机,然而还在一个Nginx当中,还是会存在资源竞争的问题,所以要将动态数据和动态资源放在不同的Nginx当中,【举荐应用这种形式】实现如下: - Nginx 1 动态数据 配置文件如下 ```yml worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #加载动态数据 server { listen 801; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 location / { proxy_pass http://Demo.Application; } } #负载平衡(分流配置) upstream Demo.Application{ server localhost:5001; } } ``` - Nginx2 动态资源 配置文件如下 ```yml worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #加载动态资源 server { listen 802; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root D:/StaticResource/wwwroot; } } } ``` - Nginx3 合并资源配置文件如下 ```yml worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #用来合并 动态数据和动态资源 server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 动态数据 location / { proxy_pass http://localhost:801; } #代理 动态资源 location ~ \.(ico|js|css|png|jpg|mp4)$ { proxy_pass http://localhost:802; } } } ```二、Nginx代理缓存条件 ...

March 14, 2022 · 3 min · jiezi

关于nginx:Nginx一

一、Nginx外围概念什么是Nginx? Nginx 是高性能的 HTTP 和反向代理的服务器同时也是邮件代理服务器。 官网地址:https://nginx.org/ 什么是反向代理服务器 没有Nginx之前咱们的申请是从客户端间接到后端服务,后端服务器响应后间接返回客户端,如图: 当初是Nginx代理后端服务器来接管客户端发送的申请,这就是Nginx的反向代理,如图: 二、Nginx的利用场景利用场景 Nginx次要利用在集群零碎中。 三、Nginx我的项目落地查问商品为例落地,启动两个实例,一个端口号:5000,另一个端口号为:5001,如图: 查问商品的我的项目新建一个API控制器【ProductController】,代码如下: [Route("api/[controller]")] [ApiController] public class ProductController : ControllerBase { /// <summary> ///获取商品数据 /// </summary> /// <returns></returns> [HttpGet] public IActionResult Get() { List<Product> list = new List<Product>() { new Product(){ Name="手机", Price = 1000 }, new Product(){ Name="笔记本电脑", Price = 5000 }, new Product() { Name="电视机", Price = 5000 } }; System.Console.WriteLine("查问商品"); return Ok(list); } } 新建一个商品畛域模型类【Product】,代码如下: public class Product { /// <summary> /// 主键 /// </summary> public Guid Id { get; set; } = Guid.NewGuid(); /// <summary> /// 名称 /// </summary> public string Name { get; set; } /// <summary> /// 价格 /// </summary> public decimal Price { get; set; } } 启动后,如图: ...

March 14, 2022 · 3 min · jiezi

关于nginx:Nginx二

Nginx (二)限流一、Nginx限流什么是限流 限度客户端的申请数达到服务器就是限流。 条件 nginx服务器我的项目实例【以查问商品为例,启动两个实例 ,端口:5000\5001】应用 jemter 压测Nginx 实现限流 条件 限流定义 # 命令 主机名称变量 限流的空间用来存储申请量的 limit_conn_zone $server_name zone=perserver:10m;应用限流 在反向代理中增加配置 limit_conn perserver 1; #只容许一条申请到这个反向代理服务器nginx.conf 整体配置代码如下: worker_processes 1; events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #限流定义 limit_conn_zone $server_name zone=perserver:10m; server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理 location / { limit_conn perserver 1; proxy_pass http://Demo.Application; } } #负载平衡(分流配置) upstream Demo.Application{ least_conn; server localhost:5000; server localhost:5001; } }我的项目我的项目实例 ...

March 14, 2022 · 2 min · jiezi

关于nginx:nginx-修改配置后重启

重启1、进入 nginx 目录# cd /usr/local/sbin2、输出命令# ./nginx -s reload

March 7, 2022 · 1 min · jiezi

关于nginx:Nginx前端入门

Nginx 介绍传统的 Web 服务器,每个客户端连贯作为一个独自的过程或线程解决,需在切换工作时将 CPU 切换到新的工作并创立一个新的运行时上下文,耗费额定的内存和 CPU 工夫,当并发申请减少时,服务器响应变慢,从而对性能产生负面影响。 Nginx 是开源、高性能、高牢靠的 Web 和反向代理服务器,而且反对热部署,简直能够做到 7 * 24 小时不间断运行,即便运行几个月也不须要重新启动,还能在不间断服务的状况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能反对高达 5w 个并发连接数,最重要的是,Nginx 是收费的并能够商业化,配置应用也比较简单。 Nginx 的最重要的几个应用场景: 动态资源服务,通过本地文件系统提供服务;反向代理服务,延长出包含缓存、负载平衡等;API 服务,OpenResty ;对于前端来说 Node.js 不生疏了,Nginx 和 Node.js 的很多理念相似,HTTP 服务器、事件驱动、异步非阻塞等,且 Nginx 的大部分性能应用 Node.js 也能够实现,但 Nginx 和 Node.js 并不抵触,都有本人善于的畛域。Nginx 擅长于底层服务器端资源的解决(动态资源解决转发、反向代理,负载平衡等),Node.js 更善于下层具体业务逻辑的解决,两者能够完满组合,独特助力前端开发。 上面咱们着重学习一下 Nginx 的应用。 相干概念2.1 简略申请和非简略申请首先咱们来理解一下简略申请和非简略申请,如果同时满足上面两个条件,就属于简略申请: 申请办法是 HEAD、GET、POST 三种之一;HTTP 头信息不超过左边着几个字段:Accept、Accept-Language、Content-Language、Last-Event-IDContent-Type 只限于三个值 application/x-www-form-urlencoded、multipart/form-data、text/plain;但凡不同时满足这两个条件的,都属于非简略申请。 浏览器解决简略申请和非简略申请的形式不一样: 简略申请 对于简略申请,浏览器会在头信息中减少 Origin 字段后间接收回,Origin 字段用来阐明,本次申请来自的哪个源(协定+域名+端口)。 如果服务器发现 Origin 指定的源不在许可范畴内,服务器会返回一个失常的 HTTP 回应,浏览器取到回应之后发现回应的头信息中没有蕴含 Access-Control-Allow-Origin 字段,就抛出一个谬误给 XHR 的 error 事件; ...

March 3, 2022 · 9 min · jiezi

关于nginx:一怒之下我把-Nginx-核心知识点扒了个底朝天

什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协定。他实现十分高效的反向代理、负载平衡,他能够解决2-3万并发连接数,官网监测能反对5万并发,当初中国应用nginx网站用户有很多,例如:新浪、网易、 腾讯等 Nginx 有哪些长处?跨平台、配置简略。非阻塞、高并发连贯:解决 2-3 万并发连接数,官网监测能反对 5 万并发。内存耗费小:开启 10 个 Nginx 才占 150M 内存。老本低廉,且开源。稳定性高,宕机的概率十分小。内置的健康检查性能:如果有一个服务器宕机,会做一个健康检查,再发送的申请就不会发送到宕机的服务器了。从新将申请提交到其余的节点上Nginx利用场景?http服务器。Nginx是一个http服务能够独立提供http服务。能够做网页动态服务器。虚拟主机。能够实现在一台服务器虚构出多个网站,例如集体网站应用的虚拟机。反向代理,负载平衡。当网站的访问量达到肯定水平后,单台服务器不能满足用户的申请时,须要用多台服务器集群能够应用nginx做反向代理。并且多台服务器能够均匀分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的状况。nginz 中也能够配置平安治理、比方能够应用Nginx搭建API接口网关,对每个接口服务进行拦挡。Nginx怎么解决申请的?server {                                    # 第一个Server区块开始,示意一个独立的虚拟主机站点        listen       80;                          # 提供服务的端口,默认80        server_name  localhost;                    # 提供服务的域名主机名        location / {                               # 第一个location区块开始            root   html;                           # 站点的根目录,相当于Nginx的装置目录            index  index.html index.html;          # 默认的首页文件,多个用空格离开        }                                          # 第一个location区块后果首先,Nginx 在启动时,会解析配置文件,失去须要监听的端口与 IP 地址,而后在 Nginx 的 Master 过程外面先初始化好这个监控的Socket(创立 S ocket,设置 addr、reuse 等选项,绑定到指定的 ip 地址端口,再 listen 监听)。而后,再 fork(一个现有过程能够调用 fork 函数创立一个新过程。由 fork 创立的新过程被称为子过程 )出多个子过程进去。之后,子过程会竞争 accept 新的连贯。此时,客户端就能够向 nginx 发动连贯了。当客户端与nginx进行三次握手,与 nginx 建设好一个连贯后。此时,某一个子过程会 accept 胜利,失去这个建设好的连贯的 Socket ,而后创立 nginx 对连贯的封装,即 ngx\_connection\_t 构造体。接着,设置读写事件处理函数,并增加读写事件来与客户端进行数据的替换。最初,Nginx 或客户端来被动关掉连贯,到此,一个连贯就死于非命了。Nginx 是如何实现高并发的?如果一个 server 采纳一个过程(或者线程)负责一个request的形式,那么过程数就是并发数。那么不言而喻的,就是会有很多过程在期待中。等什么?最多的应该是期待网络传输。 而 Nginx 的异步非阻塞工作形式正是利用了这点期待的工夫。在须要期待的时候,这些过程就闲暇进去待命了。因而体现为少数几个过程就解决了大量的并发问题。 Nginx是如何利用的呢,简略来说:同样的 4 个过程,如果采纳一个过程负责一个 request 的形式,那么,同时进来 4 个 request 之后,每个过程就负责其中一个,直至会话敞开。期间,如果有第 5 个request进来了。就无奈及时反馈了,因为 4 个过程都没干完活呢,因而,个别有个调度过程,每当新进来了一个 request ,就新开个过程来解决。 ...

February 25, 2022 · 2 min · jiezi

关于nginx:利用Nginx-requestid对用户行为追踪

问题背景:业务侧可能遇到过这样一个问题,通过MySQL SlowLog拿到某个慢查问的SQL,然而却很难找到对应的业务代码的出处(当然SQL自身具备非凡识别性或是对业务零碎十分相熟除外),如果SQL特色在零碎中辨识度不高或者多处都存在,找起来着实很苦楚,亲测是这样。 针对上述呈现的问题,Nginx request_id能够完满解决 $request_id unique request identifier generated from 16 random bytes, in hexadecimal (1.11.0) nginx 从1.11 之后反对生成request_id,request_id是以16进制示意,由16个随机字节生成的惟一申请标识符。通过$request_id传递,能够将接入层、web层、底层sql串起来,通过request_id可能跟踪每次申请的路由。 Talk is cheap, show me the code: nginx 接入层的要害配置:map $http_x_log_request_id $log_request_id { default $http_x_log_request_id; - $request_id; "" $request_id;}location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param LOG_REQUEST_ID $log_request_id; include fastcgi_params; fastcgi_intercept_errors on; error_page 500 502 503 504 /50x_php.html;}2.业务层Web框架入口设置全局变量: $GLOBALS['LOG_REQUEST_ID'] = !empty($_SERVER['LOG_REQUEST_ID']) ? $_SERVER['LOG_REQUEST_ID'] : $_SERVER['REQUEST_TIME_FLOAT'];3.业务日志收集到文件: <?php....$trace_log['controller'] = controller值$trace_log['action'] = action值$trace_log['url'] = 以后申请的url, 能够用$_SERVER['REQUEST_URI']获取;$trace_log['reference'] = //reference, 能够从$_SERVER获取;$trace_log['user_agent'] = user_agent值,能够从$_SERVER获取;$trace_log['ip'] = ip获取函数$trace_log['http_status'] = http状态码,能够从$_SERVER获取;$trace_log['log_request_id'] = isset($GLOBAL['LOG_REQUEST_ID']) ? isset($GLOBAL['LOG_REQUEST_ID']) : '';write_log_to_file(json_encode($trace_log));....文件->ELK框架底层SQL执行:$comment_trace_id = '';if(isset($GLOBALS['LOG_REQUEST_ID']) && !empty($GLOBALS['LOG_REQUEST_ID'])) { $comment_trace_id= '/*trace_id_' . $GLOBALS['LOG_REQUEST_ID'] . '*/';}$sql = $sql . $comment_trace_id; //sql 尾接request_id$this->_result = $this->execute($sql);//这样底层的慢日志sql 就会带上request_id这里在执行的SQL语句前面接上/*trace_id_request_id*/,并不影响SQL自身的执行,与此同时还能晓得SQL的出处(与申请关联)。 ...

February 23, 2022 · 1 min · jiezi

关于nginx:nginx-正则表达式

1、nginx配置根底 1、正则表达式匹配 ~ 辨别大小写匹配 ~* 不辨别大小写匹配 !~和!~*别离为辨别大小写不匹配及不辨别大小写不匹配 ^ 以什么结尾的匹配 $ 以什么结尾的匹配 转义字符。能够转. * ?等 代表任意字符2、文件及目录匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行 例: location = / 匹配任何查问,因为所有申请都已 / 结尾。然而正则表达式规定和长的块规定将被优先和查问匹配location ^~ /images/ { 匹配任何已/images/结尾的任何查问并且进行搜寻。任何正则表达式将不会被测试。location ~* .(gif|jpg|jpeg)$ { 匹配任何已.gif、.jpg 或 .jpeg 结尾的申请入门 1、if指令所有的Nginx内置变量都能够通过if指令和正则表达式来进行匹配,并且依据匹配后果进行一些操作,如下: 代码如下 复制代码if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break;} if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) { set $id $1;}应用符号~*和~模式匹配的正则表达式: 1.~为辨别大小写的匹配。2.~*不辨别大小写的匹配(匹配firefox的正则同时匹配FireFox)。3.!~和!~*意为“不匹配的”。Nginx在很多模块中都有内置的变量,罕用的内置变量在HTTP外围模块中,这些变量都能够应用正则表达式进行匹配。 2、能够通过正则表达式匹配的指令location查看维基:location可能这个指令是咱们平时应用正则匹配用的最多的指令: 代码如下 复制代码location ~ .*.php?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwsite/test.com/$fastcgi_script_name; include fcgi.conf;}简直每个基于LEMP的主机都会有如上一段代码。他的匹配规定相似于if指令,不过他多了三个标识符,^~、=、@。并 ...

February 23, 2022 · 2 min · jiezi

关于nginx:Nginx-安装

新的Centos官网对应的repo已无奈应用,吃力吧啦的找了其余的几个源,然而发现无奈间接应用yum install nginx进行nginx的装置。在此记录相干的解决办法。 装置所需依赖 sudo yum install yum-utils设置新的yum repository,应用命令 vim /etc/yum.repos.d/nginx.repo<!-- more --> [nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/cen...$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_...module_hotfixes=true [nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mai...$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_...module_hotfixes=true 执行yum install nginx失常装置之后,即可应用。相干装置目录/etc/nginx以上仅为Centos下的nginx装置,操作。其余参见官网Nginx装置 因为此解决方案可能存在时效,若不能失常应用。仍须要参见官网解决方案。 http://yannis.club

February 22, 2022 · 1 min · jiezi

关于nginx:windows将nginx配置为开机自启动

1.电脑系统 windows10专业版2.在开发实现之后,咱们须要部署,在这里我抉择的是nginx,上面我来分享一下把nginx配置为开机自启动.3-1.下载 WinSW // 64位下载地址为:https://github.com/winsw/winsw/releases/download/v2.3.0/WinSW.NET2.exe3-2.将下载的 WinSW.exe文件重命名为nginxservice.exe并放在服务器nginx的装置目录下3-3.在nginx装置目录下新建一个ngingxservice.xml文件,内容为: <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <logpath>D:\nginx-1.20.1</logpath> <logmode>roll</logmode> <depend></depend> <executable>D:\nginx-1.20.1\nginx.exe</executable> <stopexecutable>D:\nginx-1.20.1\nginx.exe -s stop</stopexecutable></service>// 留神:依据nginx装置目录不同,// 批改对应的logpath、executable、stopexecutable标签4.cmd(管理员身份)进入nginx的装置目录,执行:nginxservice.exe install命令,而后进入零碎服务,看是否注册nginx服务胜利并且查看是否设置为主动启动 到此,nginx就被注册为零碎服务了,并且设置为开机自启5.nginx代理后刷新显示404 通过首页进入拜访页面失常,F5刷新之后呈现谬误404。//起因剖析:起因是因为web单页面开发模式,只有一个index.html入口,其余门路是前端路由去跳转的,nginx没有对应这个门路,当然就是404了。6.解决nginx代理后刷新显示404 location / { root D:/aiqitao/aiqitao/dist; index index.html index.htm; try_files $uri $uri/ /index.html; //要害代码 }在配置中加上try_files,意思跟翻译差不多,"尝试读取文件"。uri这个是nginx 的一个变量,寄存着用户拜访的地址,例如http://localhost:8200/chooseSize那么uri这个是nginx的一个变量,寄存着用户拜访的地址,例如http://localhost:8200/chooseSize那么uri这个是nginx的一个变量,寄存着用户拜访的地址,例如http://localhost:8200/chooseSize那么uri就是/chooseSize;uri/代表拜访的是一个目录例如http:localhost:8080/chooseSize/那么uri/代表拜访的是一个目录例如http://localhost:8200/chooseSize/那么uri/代表拜访的是一个目录例如http://localhost:8200/chooseSize/那么uri/就是/chooseSize/;最初/index.html就是咱们首页的地址。最终下面的意思是如果第一个存在,间接返回;不存在的话读取第二个,如果存在,读取返回;如果还是不存在,就会fall back到 try_files 的最初一个选项 /index.html,发动一个外部 "子申请",也就是相当于 nginx 发动一个 HTTP 申请到 http://localhost:8200/index.html,再通过前端路由到/chooseSize。7.如果更新了dist文件,刷新页面还是之前的,解决办法如下 右击,抉择重新启动//再次刷新页面之后,就是最新的页面数据了8.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰。

February 19, 2022 · 1 min · jiezi

关于nginx:nginx配置

nginx配置1.开发环境 vue+node2.电脑系统 windows10专业版3.在应用我的项目开发的过程中,咱们常常会应用nginx进行转发,上面我我的总结,心愿对你有所帮忙!4.nginx官网下载地址: http://nginx.org/en/download.html//本次应用的版本是:1.18.05.下载之后,咱们会失去这样的一个目录构造:5-1.咱们次要配置的是,如下图:5-2.conf文件夹上面的nginx.conf代码如下: #user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8010; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root G:/chendistmo/dist; index index.html index.htm; # proxy_pass http://192.168.137.63:3000; } location /api { proxy_pass http://192.168.137.63:3000; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #}}5-3.咱们须要批改的中央,如下图: ...

February 18, 2022 · 2 min · jiezi

关于nginx:NGINX

构建爬虫防空工程SQL注入突发得流量限度客户端缓存,代理缓存用户登录授信,IP访问控制正式上线灰度公布配置

February 16, 2022 · 1 min · jiezi

关于nginx:Nginx-最小配置

平安服务器是只容许所需数量的服务器。现实状况下,咱们将通过独自启用其余性能来基于最小零碎构建服务器。进行起码的配置也有助于调试。如果该谬误在最小零碎中不可用,则别离增加性能,而后持续搜寻谬误。 这是运行nginx所需的最低配置: # /etc/nginx/nginx.confevents {} # event context have to be defined to consider config validhttp {server { listen 80; server_name javatpoint.co www.javatpoint.co *.javatpoint.co; return 200 "Hello";}Root,Location和try_files指令Root 指令root指令用于设置申请的根目录,从而容许nginx将传入的申请映射到文件系统上。 server { listen 80; server_name javatpoint.co; root /var/www/javatpoint.co;}它容许nginx依据申请返回服务器内容: javatpoint.co:80/index.html # returns /var/www/learnfk.com/index.htmljavatpoint.co:80/foo/index.html # returns /var/www/learnfk.com/foo/index.htmlLocation指令location指令用于依据申请的URI(对立资源标识符)来设置配置。 语法为: location [modifier] path示例: location /foo { # ...}如果未指定修饰符,则将门路视为前缀,之后能够追随任何内容。下面的示例将匹配: /foo/fooo/foo123/foo/bar/index.html...咱们还能够在给定的上下文中应用多个location指令: server { listen 80; server_name javatpoint.co; root /var/www/javatpoint.co; location/{ return 200 "root"; } location /foo { return 200 "foo"; }}javatpoint.co:80 / # => "root"javatpoint.co:80 /foo # => "foo"javatpoint.co:80 /foo123 # => "foo"javatpoint.co:80 /bar # => "root"Nginx还提供了一些能够与 location 指令联合应用的修饰符。 ...

February 14, 2022 · 2 min · jiezi

关于nginx:nginx简介

我的github该文档地址 nginx简介官网:https://nginx.org/ [TOC] nginx装置yum install nginx nginx常用命令名称命令备注查看版本nginx -v 查找装置门路find / -name nginx配置文件个别在/etc/nginx/nginx.conf启动systemctl start nginx 查看状态systemctl status nginx 从新加载配置文件nginx -s reload批改配置文件后,运行它,立即失效疾速敞开nginx -s stop 优雅的敞开nginx -s quit nginx动态内容服务web服务一个重要工作就是提供文件服务,图片,html页面 咱们举个例子: 咱们创立一个动态页面,外面有一张图片,这须要咱们在配置文件中设置http中server中的location 我的项目文件构造 [root@VM-0-5-centos data]# pwd/data[root@VM-0-5-centos data]# tree.└── fptxl ├── fptxl.html └── images └── rich_woman.jpg动态文件代码 动态内容代码 nginx配置 nginx.conf 文件的http-->server->location配置 # 前缀"/"会匹配所有申请,如果有多个location匹配一个申请,则抉择前缀最长的 location / { #每个申请加上root的地址,就是文件在服务器的实在地址 root /data/fptxl; #默认关上网页 index fptxl.html } 每次更改配置文件后,记得从新加载配置文件 nginx -s reloadnginx简略代理服务(前后端拆散例子)nginx一个罕用性能是当作代理服务器,承受申请,传给被代理服务器,获取响应,返回给客户端。 +------------+ +------------+ +----------------+| | +------------> | | +------------> | || http client| |proxy server| | proxied server || | <------------+ | | <------------+ | |+------------+ +------------+ +----------------+ browser nginx tomcat咱们举个例子:配置一个简略的代理服务用于解决后端申请,nginx动态内容服务用于解决前端申请,这能够作为一种前后端拆散配置计划。 ...

February 10, 2022 · 4 min · jiezi

关于nginx:神器-Nginx-的学习手册-建议收藏

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力的确在同类型的网页服务器中体现较好。 Nginx 专为性能优化而开发,性能是其最重要的要求,非常重视效率,有报告 Nginx 能反对高达 50000 个并发连接数。 01 Nginx 常识网结构图 Nginx 的常识网结构图如下: 02反向代理 正向代理:局域网中的电脑用户想要间接拜访网络是不可行的,只能通过代理服务器来拜访,这种代理服务就被称为正向代理。 反向代理:客户端无奈感知代理,因为客户端拜访网络不须要配置,只有把申请发送到反向代理服务器,由反向代理服务器去抉择指标服务器获取数据,而后再返回到客户端。 此时反向代理服务器和指标服务器对外就是一个服务器,裸露的是代理服务器地址,暗藏了实在服务器 IP 地址。 03 负载平衡 客户端发送多个申请到服务器,服务器解决申请,有一些可能要与数据库进行交互,服务器处理完毕之后,再将后果返回给客户端。 一般申请和响应过程如下图: 然而随着信息数量增长,访问量和数据量飞速增长,一般架构无奈满足当初的需要。 咱们首先想到的是降级服务器配置,能够因为摩尔定律的日益生效,单纯从硬件晋升性能曾经逐步不可取了,怎么解决这种需要呢? 咱们能够减少服务器的数量,构建集群,将申请散发到各个服务器上,将原来申请集中到单个服务器的状况改为申请散发到多个服务器,也就是咱们说的负载平衡。 图解负载平衡: 假如有 15 个申请发送到代理服务器,那么由代理服务器依据服务器数量,平均分配,每个服务器解决 5 个申请,这个过程就叫做负载平衡。 04动静拆散 为了放慢网站的解析速度,能够把动静页面和动态页面交给不同的服务器来解析,放慢解析的速度,升高由单个服务器的压力。 动静拆散之前的状态: 动静拆散之后: 05Nginx装置 Nginx 如何在 Linux 装置 参考链接: https://blog.csdn.net/yujing1314/article/details/97267369Nginx 常用命令 查看版本: ./nginx -v启动: ./nginx敞开(有两种形式,举荐应用 ./nginx -s quit):  ./nginx -s stop ./nginx -s quit从新加载 Nginx 配置: ./nginx -s reloadNginx 的配置文件 配置文件分三局部组成: ①全局块从配置文件开始到 events 块之间,次要是设置一些影响 Nginx 服务器整体运行的配置指令。 ...

February 8, 2022 · 2 min · jiezi

关于nginx:nginx1202安装使用

一、装置编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、下载nginx文件wget http://nginx.org/download/nginx-1.20.2.tar.gz三、装置pcrepcre能够让nginx反对rewrite从官网下载pcre: https://sourceforge.net/proje...编译装置: ./configure --prefix=/usr/local/pcremake && make install查看pcre的版本: pcre-config --version四、装置nginx./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/home/app/pcre-8.35-- 留神:--with-pcre参数寄存的是pcre的解压后的源码地位,不是编译装置后的程序地位启动nginx cd /usr/local/nginx/sbin./nginx拜访页面:默认的配置文件凋谢的是80端口

January 27, 2022 · 1 min · jiezi

关于nginx:BFE开源项目2021年回顾和致谢

转瞬曾经到了农历牛年的年尾。过来的一年,在BFE开源我的项目成员和社区的共同努力下,BFE开源我的项目取得进一步倒退,获得了多个具备里程碑意义的成绩。 明天,咱们就来对BFE开源我的项目走过的2021年进行一下回顾。 剧透!咱们选出了2021年对BFE开源我的项目做出奉献的十余位社区成员,会向他们送出一份小礼物以表示感谢。见文末致谢局部。 对于BFE开源我的项目(https://github.com/bfenetworks/bfe) BFE (Beyond Front End) 是源自百度的企业级七层负载平衡开源软件。在百度外部,BFE平台已接入大部分业务流量,每日转发申请超过1万亿,峰值QPS超过1000万。BFE于2019年7月正式开源,并取得了宽泛的关注。2020年6月24日,BFE开源我的项目被CNCF(Cloud Native Computing Foundation,云原生计算基金会)正式接收为Sandbox Project,这是在网络方向上中国第一个被CNCF接收的开源我的项目。01 一直壮大的社区和用户群在过来的一年,咱们最开心的就是BFE开源社区一直壮大。 贡献者和Pull Request 新增16位贡献者,贡献者达到90人;贡献者在2021年发动了170余次Pull RequestIssues on Github BFE开源社区成员在Github Issues上也提交了很多高质量的需要和问题,Issue总数已达960多个。企业用户 有更多的企业开始应用BFE开源软件,蕴含金融、媒体、制作、软件、互联网等多个行业,其中行业出名用户包含奇虎360、现实汽车、用友网络等(btw,也欢送更多BFE开源的用户将应用信息提交到Github Issue中,以便于咱们更好的提供服务)微信公众号 2021年,咱们开明了微信公众号“BFE开源我的项目”,用于向中文社区分享BFE开源我的项目的信息和深刻解读以及网络负载平衡技术的相干思考,至今已公布二十余篇业余文章,受到宽泛关注02 更残缺的开源产品BFE社区期待已久的BFE管制面组件于2021年10月开源公布,反对通过Web图形界面和RESTful Open API接口对立治理BFE集群的配置。详情见之前的文章:《喜大普奔!BFE 管制立体正式开源公布!》 2019年开源的BFE转发引擎和2021年开源的管制面组件一起,组成了残缺的七层负载平衡开源产品,能够更好的满足企业级生产环境的流量接入和治理需要。 BFE Ingress Controller 也于2021年10月开源公布,用户在K8s环境中能够抉择BFE Ingress,从而享受到BFE的泛滥长处和弱小能力。详情见之前的文章: 《BFE Ingress Controller正式公布!》 03 转发引擎继续迭代优化BFE转发引擎在2021年内公布了5个新版本,新增了多个的重要的新性能,包含: 根底转发规定(见之前的文章:《BFE转发表的降级阐明》,《BFE和Nginx有什么差别?- 转发模型的比照》) 根底规定可应用域名(Host)和门路(Path)作为匹配条件,组成根底规定表。在退出根底规定表后,BFE原来的转发表成为“高级规定表”,持续放弃原来机制形容能力强、执行顺序控制能力强的劣势;新增的“根底规定表”,应用树形查找,匹配速度快,能够反对较大数量(几千甚至上万)转发规定的疾速查找。连接数限流 能够设置后端实例的连接数限度,避免后端服务器过载URL哈希负载平衡策略 负载平衡策略新减少反对URL哈希策略,能够确保同一个URL的申请会达到同一后端实例后端和煦上线 反对后端实例从故障中复原时,迟缓减少向该实例的流量调配,防止同时涌入的大量新申请导致该实例负载过高HTTP Header编辑 能够对符合条件的HTTP申请和响应的Header进行新增、批改和删除操作TCP Keepalive自定义配置 用于配置TCP长连贯心跳包的发送策略,以适应不同场景。例如,通过进行发送TCP Keepalive包或者升高发送频率,能够升高例如智能手表等客户端的耗电量04 BFE的书籍出版深刻介绍BFE开源我的项目的书籍《万亿级流量转发:BFE核心技术与实现》于2021年8月由电子工业出版社正式出版。(见之前的文章:《万亿级流量转发 - BFE核心技术与实现》开始预售) 该书围绕BFE开源我的项目,介绍网络前端接入和网络负载平衡的相干技术原理,阐明BFE开源软件的设计思维和实现机制,解说如何基于BFE开源软件搭建网络接入平台。多位业内专家为本书撰写了举荐语,其中包含来自招商银行、央视网、度小满金融等BFE用户的技术负责人。 《万亿级流量转发:BFE核心技术与实现》一经上市,立刻荣登京东24小时互联网类图书销量总榜第一。 对此书有趣味的读者,能够在京东或当当购买。此书也提供在线开源版本,见《深刻了解BFE》。有多名热心读者针对在线开源版本中的笔误提交了修改,非常感谢大家的反对。 05 对外分享在2021年,BFE开源我的项目在多个场合进行了分享,包含: 2021年6月27日,在Gopher China 分享:《深刻了解BFE》2021年8月1日,在GOTC(寰球开源技术峰会)2021上分享《百度万亿流量转发平台的开源之路》2021年9月8日,在云原生社区分享《深刻了解BFE技术与实现:百度万亿级流量网关揭秘》2021年12月10日,在中国KubeCon + CloudNativeCon + Open Source Summit 线上峰会,分享《BFE:企业级七层负载平衡开源软件》以上分享内容,请查看“BFE开源我的项目”微信公众号的历史文章。 ...

January 25, 2022 · 1 min · jiezi

关于nginx:Centos8中如何更改文件夹中多个文件的扩展名

本教程将探讨将文件从特定扩展名更改为另一个扩展名的疾速办法。咱们将为此应用 shell循环、rename命令。办法一:应用循环在目录中递归更改文件扩展名的最常见办法是应用 shell 的 for 循环。咱们能够应用 shell 脚本提醒用户输出目标目录、旧的扩展名和新的扩展名以进行重命名。以下是脚本内容: [root@localhost ~]# vim rename_file.sh !/bin/bashecho "Enter the target directory "read target_dircd $target_dir echo "Enter the file extension to search without a dot"read old_ext echo "Enter the new file extension to rename to without a dot"read new_ext echo "$target_dir, $old_ext, $new_ext" for file in *.$old_extdo mv -v "$file" "${file%.$old_ext}.$new_ext"done;Centos8中如何更改文件夹中多个文件的扩展名Centos8中如何更改文件夹中多个文件的扩展名下面的脚本将询问用户要解决的目录,而后 cd 进入设置目录。接下来,咱们失去没有点.的旧扩展名。最初,咱们取得了新的扩展名来重命名文件。而后应用循环将旧的扩展名更改为新的扩展名。 其中${file%.$old_ext}.$new_ext意思为去掉变量$file最初一个.及其右面的$old_ext扩展名,并增加$new_ext新扩展名。 应用mv -v,让输入信息更具体。 上面运行脚本,将/root/test上面的以.txt结尾的替换成.log: [root@localhost ~]# chmod +x rename_file.sh [root@localhost ~]# ./rename_file.sh Enter the target directory /root/testEnter the file extension to search without a dottxtEnter the new file extension to rename to without a dotlog/root/test, txt, logrenamed 'file10.txt' -> 'file10.log'renamed 'file1.txt' -> 'file1.log'renamed 'file2.txt' -> 'file2.log'renamed 'file3.txt' -> 'file3.log'renamed 'file4.txt' -> 'file4.log'renamed 'file5.txt' -> 'file5.log'renamed 'file6.txt' -> 'file6.log'renamed 'file7.txt' -> 'file7.log'renamed 'file8.txt' -> 'file8.log'renamed 'file9.txt' -> 'file9.log'www.51cto.com/it/news/2019/1230/17971.htmlnews.163.com/17/1212/09/D5EQJ2A400014AEE.htmlnews.163.com/17/0606/10/CM89AAKB00018AOP.htmlCentos8中如何更改文件夹中多个文件的扩展名Centos8中如何更改文件夹中多个文件的扩展名如果想将.log结尾的更改回.txt,如下操作:Centos8中如何更改文件夹中多个文件的扩展名Centos8中如何更改文件夹中多个文件的扩展名 ...

January 20, 2022 · 1 min · jiezi

关于nginx:NGINX-创始人-Igor-Sysoev-退出-F5-20-年发展简史令人肃然起敬

1月18日,高性能 HTTP 服务器 NGINX 官网公布了题目为“Do Svidaniya, Igor, and Thank You for NGINX”的文章,正式发表了 NGINX 创始人 Igor Sysoev 退出 NGINX 和 F5 的音讯。 据理解,NGINX Inc.于 2019 年 3月份被 F5 Networks 以 6.7 亿美元的价格收买,目前的 NGINX 属于 F5 的一个业务部门,次要致力于开源我的项目和多云商业产品。而作为 NGINX 的联结创始人之一,此次 Igor 的来到,也是心愿能将更多的工夫花在关照家庭和集体我的项目上。 在这篇 NGINX 官网文章里,他们对 Igor 为 NGINX 社区所做的奉献表白了感激: “With profound appreciation and gratitude, we announce today that Igor Sysoev – author of NGINX and co‑founder of NGINX, Inc. – has chosen to step back from NGINX and F5 in order to spend more time with his friends and family and to pursue personal projects.” ...

January 20, 2022 · 2 min · jiezi

关于nginx:神器-Nginx-的学习手册-建议收藏

大家好,我是民工哥。 无论是运维、开发、测试,Nginx技术栈的学习总是必不可少的,只是不同的岗位把握的深度与广度不同而已。所以,民工哥利用周末休息时间,将往期推送的Nginx文章给大家重新整理进去,整顿出成体系的Nginx常识体系,供大家学习与参考。 码字不易,如有帮忙,请点在看与转发朋友圈反对一波,感激!!!! Nginx 简介 Nginx 是开源、高性能、高牢靠的 Web 和反向代理服务器,而且反对热部署,简直能够做到 7 * 24 小时不间断运行,即便运行几个月也不须要重新启动,还能在不间断服务的状况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能反对高达 5w 个并发连接数,最重要的是, Nginx 是收费的并能够商业化,配置应用也比较简单。 官方网站:http://www.nginx.org Nginx 特点Web服务器高性能的WEB服务器软件,与Apache相比,它反对更多的并发连贯且占用服务器资源少,效率高 反向代理或负载平衡服务器作为负载平衡服务器,它能够作为HTTP SERVER或DB等服务的代理服务器,相似Haproxy代理软件的性能,Nginx的代理性能绝对简略,效率也不迭Haproxy,同时它也是一个优良的邮件代理服务软件 缓存服务器Nginx还能够作缓存服务器,相似于业余的缓存软件性能 Nginx 优缺点Nginx 长处高并发:能反对1-2万甚至更多的并发连贯(动态小文件)内存耗费少能够做HTTP反向代理——负载平衡的性能内置对集群节点服务器的衰弱性查性能,不过性能绝对较弱通过cache插件能够实现缓存软件可能实现的性能Nginx 的毛病Nginx 仅能反对http、https和Email协定,这样就在适用范围下面小些,这个是它的毛病 对后端服务器的健康检查,只反对通过端口来检测,不反对通过 url来检测。不反对 Session 的间接放弃,但能通过 ip_hash 来解决 Nginx 利用场景Nginx 的最重要的几个应用场景: 动态资源服务,通过本地文件系统提供服务;反向代理服务,延长出包含缓存、负载平衡等;API 服务, OpenResty ;对于前端来说 Node.js 并不生疏, Nginx 和 Node.js 的很多理念相似, HTTP 服务器、事件驱动、异步非阻塞等,且 Nginx 的大部分性能应用 Node.js 也能够实现,但 Nginx 和 Node.js 并不抵触,都有本人善于的畛域。Nginx 擅长于底层服务器端资源的解决(动态资源解决转发、反向代理,负载平衡等), Node.js 更善于下层具体业务逻辑的解决,两者能够完满组合。 用一张图示意: Nginx 到底能够做什么?看完这篇你就懂了! 更多对于Nginx罕用场景利用配置可参考: 请务必珍藏!Nginx 五大常见利用场景彻底搞懂 Nginx 五大利用场景!进来吹牛逼再也不放心了Apache VS Nginx ...

January 17, 2022 · 4 min · jiezi

关于nginx:Nginx-和-Gunicorn-性能对比测试

前言测试平台介绍 压力测试工具介绍应用名为 wrk 的压力测试工具 参考文章: ubuntu20.04 装置 wrk 压力测试工具以及简略应用 纯 Nginx筹备工作装置 Nginx sudo apt install nginx替换默认的介绍页 location / { #设置content type default_type text/html ; # HTTP Status Code 和 内容 return 200 "hello world! ";}【Nginx】输入/返回 HelloWorld 重启 Nginx sudo service nginx restart查看 Nginx 状态: ─$ sudo service nginx status ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2022-01-04 22:44:13 CST; 1s ago Docs: man:nginx(8) Process: 11215 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0> Process: 11216 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 11217 (nginx) Tasks: 17 (limit: 3391) Memory: 17.6M CPU: 95ms CGroup: /system.slice/nginx.service ├─11217 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ├─11218 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11219 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11220 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11221 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11222 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11223 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11224 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11226 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11227 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11228 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11229 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11230 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11231 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11232 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> ├─11233 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "> └─11234 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">1月 04 22:44:13 kali systemd[1]: Starting A high performance web server and a reverse proxy server...1月 04 22:44:13 kali systemd[1]: Started A high performance web server and a reverse proxy server.开始测试测试1wrk http://192.168.31.95 -t 16 -c 64 -d 10测试后果 ...

January 4, 2022 · 8 min · jiezi

关于nginx:nginx-cache踩坑

前言在软工试验中我启用了nginx,然而奇怪的是邻近查看的时候它忽然不行了,最终错过了软工查看工夫,给试验老师提交的录屏。 问题形容前后台启动胜利后,拜访localhost:xxxx(自设置的端口号),然而奇怪的是他并没有失去想要的成果: net::ERR_CONTENT_LENGTH_MISMATCH:长度不匹配? 谬误解决过程:1.将报错整个复制利用google进行搜寻:没想到google举荐的是一个依据国外stack overflow的翻译,可见更喜爱间接看中文的程序员有多少。惋惜它很乱,而且有的中央翻译的不太懂,感觉是浪费时间。 2.依据第二个查问后果可知是nginx的问题去看nginx日志信息: 根据选中的报错去查: 两条命令:1.sudo chmod o+x /usr/local/var:取得操作文件的权限2.sudo chown -vhR nobody:admin /usr/local/var/run/nginx:设置nginx拥有者为空,使用者为所有管理员组。 问题至此解决! 3.理解问题起因nginx时有缓存的!示例:第一步:客户端第一次向Nginx申请数据A;第二步:当Nginx发现缓存中没有数据A时,会向服务端申请数据A;第三步:服务端接管到Nginx发来的申请,则返回数据A到Nginx,并且缓存在Nginx;第四步:Nginx返回数据A给客户端利用;第五步:客户端第二次向Nginx申请数据A;第六步:当Nginx发现缓存中存在数据A时,则不会申请服务端;第七步:Nginx把缓存中的数据A返回给客户端利用。 至此我的问题全副解决,在这其中我也搜到说把proxy_temp缓存文件夹删掉,的确删掉了,而后从新申请发现能够了,就拿着电脑又去机房找老师查看了,再一刷新又不行了。这其中的原理就是我删除之后是没有缓存了,然而我拜访了一次,第二次拜访他会间接去找第一次拜访的缓存,因为权限不够,所以最终报这个错。 总结首先是此次麻烦了很长时间强哥,耽搁了他一下午还是挺愧疚的。此次最大的播种就是不能心急,同时任何货色也要记得看日志信息。

January 3, 2022 · 1 min · jiezi

关于nginx:由于配置nginx转发导致页面一片空白的解决办法及排查过程

零、前言这个一年没有登录的账号,终于又迎来了更新。考研完结后还没玩爽,又马上回归到敲代码的工作中。一年没接触coding,程度有所降落,请见谅。 一、问题复现装好nginx后,在全局配置文件中引入我的项目的配置文件,测试通过,nginx开始运行。 但在浏览器拜访nginx端口时,显示的页面只是一片空白,无论如何刷新都是空白,应用谷歌、火狐等不同浏览器症状雷同,并且控制台显示vender.js加载失败: 谬误的思路一开始没有留神vendor的这个报错,转而去查看网络、前端代码的问题: 其实网络面板也写了vendor出错但我又一次没当回事,又独自跑了一遍前端代码,不必nginx转发,能够失常显示,用nginx转发其余我的项目,也能失常显示, 只有用nginx转发这个我的项目会出错。 二、解决问题翻阅了一下网上的博客,是缓存目录权限问题,修复一下权限问题即可解决。但这样写这篇博客就没有意义了,本文更重要的意义在于本人入手把问题排查进去。 ①找到配置文件首先,因为零碎不同、装置办法不同,导致不同用户装置的nginx配置文件是不统一的,咱们要找到本人电脑上的配置文件, 应用nginx -t能够查出以后nginx的配置文件在哪个地位: nginx -t //测试nginx配置文件并返回文件地位 我电脑上的配置文件在/opt/homebrew/etc/nginx/nginx.conf(这个门路与网上大多数是不同的,所以咱们查资料时,不要照搬,而要结合实际状况具体问题具体分析) ②启用日志接下来须要启用日志性能,以便定位问题,日志性能在配置文件中开启: vim /opt/homebrew/etc/nginx/nginx.conf //编辑配置文件,启用日志性能文件内容如下: #user nobody;worker_processes 1;#error_log error.log; // 此处的正文就是配置文件的示例代码#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;// (此处略去其余内容)文件中给出了几个例子,咱们仿照着在上面加一行,门路写到本人电脑的某个门路中,例如我用的/var/log/nginx/error.log,也能够改成其余: #user nobody;worker_processes 1;#error_log error.log;#error_log logs/error.log notice;#error_log logs/error.log info;error_log /var/log/nginx/error.log info; //把谬误日志写到某个门路下#pid logs/nginx.pid;保留退出后,用nginx -s reload使更改失效: 咱们还必须保障日志写入的门路有权限,须要: // 给日志文件夹退出读、写、执行权限sudo chmod -R 777 /var/log/nginx/ 接下来nginx就会主动往/var/log/nginx/error.log这个文件外面写入日志了 ③查看日志,排查问题咱们在浏览器外面刷新几下,为的是让nginx更新几条日志。 而后查看日志: cat /var/log/nginx/error.log日志中会呈现一大堆相似上面的信息: 2021/12/31 15:33:00 [crit] 92317#0: *9819 open() "/opt/homebrew/var/run/nginx/proxy_temp/2/64/0000000642" failed (13: Permission denied) while reading upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /vendor.js HTTP/1.1", upstream: "http://127.0.0.1:4201/vendor.js", host: "localhost:8015", referrer: "http://localhost:8015/login/login"2021/12/31 15:33:01 [crit] 92317#0: *9811 open() "/opt/homebrew/var/run/nginx/proxy_temp/3/64/0000000643" failed (13: Permission denied) while reading upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /vendor.js HTTP/1.1", upstream: "http://127.0.0.1:4201/vendor.js", host: "localhost:8015", referrer: "http://localhost:8015/login/login"2021/12/31 15:33:01 [crit] 92317#0: *9846 open() "/opt/homebrew/var/run/nginx/proxy_temp/4/64/0000000644" failed (13: Permission denied) while reading upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /vendor.js HTTP/1.1", upstream: "http://127.0.0.1:4201/vendor.js", host: "localhost:8015", referrer: "http://localhost:8015/login/login" ...

January 3, 2022 · 1 min · jiezi

关于nginx:在-CentOS-下为-nginx-启用-SSLsendfile-支持

Linux 的 sendfile 零碎调用是最快的发送动态文件的形式。它通过在内核中间接拷贝数据,防止了应用 read / write 导致的用户态、内核态的上下文切换,极大的晋升了传输效率。nginx 也很早就反对了 sendfile 指令的应用。 然而防止了用户态、内核态切换也就意味着 sendfile 只能发送原始未加密的数据,nginx 用到的 OpenSSL 的加密办法是运行在用户态的。 这就产生了一个矛盾:想应用 sendfile,就不能启用 https,想应用 https 就不能用 sendfile。直到 kTLS 的呈现解决了这个矛盾。 kTLS 简略了解就是运行在内核中的加密算法,在内核态拷贝数据时能够同时做数据加密。OpenSSL 3.0 退出了 SSL_sendfile 以反对 kTLS 的应用,nginx 1.14.4 反对了 SSL_sendfile。所有条件曾经凑齐,万事俱备只欠东风。接下来就让咱们编译一套反对 SSL_sendfile 的 nginx 版本尝鲜 kTLS 是内核个性,须要比拟新的内核版本,CentOS 7 自带的 Linux 3.x 必定是不能用的。首先须要降级 Linux 内核。我应用的是 elrepo 编译好的包,间接上最新版本 5.x sudo yum install kernel-ml kernel-ml-headers (留神 OpenSSL 的 kTLS 反对须要最新的内核头文件,所以 kernel-ml-headers 也是必须的)重启零碎 sudo reboot,启用 kTLS 内核模块反对 sudo modprobe tls。留神这一步是在运行 nginx 的机器上执行的命令,如果你须要把编译好的 nginx 复制给其余服务器应用,那么所有服务器都须要启用 kTLS。相同编译 nginx 的服务器如果不运行就不须要。下载最新的 OpenSSL 源码。我间接应用的 git 版本。git clone https://github.com/openssl/openssl.git编译 nginx。configure 命令须要退出参数 --with-openssl=/path/to/openssl --with-openssl-opt=enable-ktls配置 nginx。http 块增加 sendfile on; ssl_conf_command Options KTLS;。当然其余 https 配置也是必须的重启 nginx,启用 debug 日志模式。查看呈现了 SSL_sendfile 日志阐明一切正常 ...

December 27, 2021 · 1 min · jiezi

关于nginx:使用-Nginx-构建前端日志统计服务

背景之前的几篇文章都是对于之前提到的低代码平台的。 这个大的我的项目以 low code 为外围,囊括了编辑器前端、编辑器后端、C 端 H5、组件库、组件平台、后盾管理系统前端、后盾管理系统后盾、统计服务、自研 CLI 九大零碎。明天就来说一下其中的统计服务:目标次要是为了实现 H5 页面的分渠道统计(其实不仅仅是分渠道统计,外围是想做一个自定义事件统计服务,只是目前有分渠道统计的需要),查看每个渠道具体的 PV 状况。(具体会在 url 下面体现,会带上页面名称、id、渠道类型等) 先放一下整体流程图吧: 日志收集常见的日志收集形式有手动埋点和主动埋点,这里咱们不关注于如何收集日志,而是如何将收集的日志的发送到服务器。 在常见的埋点计划中,通过图片来发送埋点申请是一种常常被驳回的,它有很多劣势: 没有跨域体积小可能实现整个 HTTP 申请+响应(只管不须要响应内容)执行过程无阻塞这里的计划就是在 nginx 上放一张 1px * 1px 的动态图片,而后通过拜访该图片(http://xxxx.png?env=xx&event=xxx),并将埋点数据放在query参数上,以此将埋点数据落到nginx日志中。 iOS 上会限度 get 申请的 url 长度,但咱们这里实在场景发送的数据不会太多,所以目前临时采纳这种计划这里简略论述一下为什么图片地址的query key 要这么设计,如果单纯是为了统计渠道和作品,很有可能会把key设计为channel、workId这种,但下面也说到了,咱们是想做一个自定义事件统计服务,那么就要思考字段的可扩展性,字段应更有通用语义。所以参考了很多统计服务的设计,这里采纳的字段为: enveventkeyvalue之后每次拜访页面,nginx就会自动记录日志到access_log中。 有了日志,上面咱们来看下如何来对其进行拆分。 日志拆分为何要拆分日志access.log日志默认不会拆分,会越积攒越多,零碎磁盘的空间会被耗费得越来越多,未来可能面临着日志写入失败、服务异样的问题。 日志文件内容过多,对于后续的问题排查和剖析也会变得很艰难。 所以日志的拆分是有必要也是必须的。 如何拆分日志咱们这里拆分日志的外围思路是:将以后的access.log复制一份重命名为新的日志文件,之后清空老的日志文件。 视流量状况(流量越大日志文件积攒的越快),按天、小时、分钟来拆分。能够把access.log按天拆分到某个文件夹中。 log_by_day/2021-12-19.loglog_by_day/2021-12-20.loglog_by_day/2021-12-21.log但下面的复制 -> 清空操作必定是要主动解决的,这里就须要启动定时工作,在每天固定的工夫(我这里是在每天凌晨 00:00)来解决。 定时工作其实定时工作不仅在日志拆分的时候会用到,在前面的日志剖析和日志革除都会用到,这里先简略介绍一下,最终会整合拆分、剖析和革除。 linux中内置的cron过程就是来解决定时工作的。在node中咱们个别会用node-schedule或cron来解决定时工作。 这里应用的是cron: /** cron 定时规定 https://www.npmjs.com/package/cron * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └ day of week (0 - 6) (Sun-Sat) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59) */具体应用形式就不开展阐明了。 ...

December 27, 2021 · 3 min · jiezi

关于nginx:Nginx-Lua-Redis-处理访问量

记录一次在我的项目当中利用 Nginx + Lua + Redis 解决访问量的问题。 我的项目背景我的项目背景是这样的。我的项目是文章散发平台,就是在一个平台上发送一篇带有图文的文章,发送文章时会抉择要把文章发送到哪些媒体资讯平台,比方:聚焦财经、太原新闻网...等这类平台。然而呢文章公布到了媒体资讯平台,那么文章在各媒体资讯平台的浏览量就获取不到了。 首次计划-放弃最后想到了一种形式:依据文章在媒体资讯平台上的 URL 链接,通过程序抓取文章的浏览量,然而呢每家媒体资讯平台浏览量的展示形式都不一样,这样解决起来很是麻烦,所以就放弃了。 调整计划文章资讯尽管是发送到了其余媒体资讯平台,然而呢这个图片的资源应用的还是咱们本人的服务,就想到了在图片进行动手的想法。 在每篇文章内容里都增加上一张固定的图片 http://www.example.com/code.jpg,with 和 height 都设置为0,不占用页面上的空间,在加载文章时还能够加载图片。 <p>测试测试</p><p><img src="http://www.example.com/code.jpg?u=21&o=6&m=12-20" with="0" height="0" /></p>图片上携带对于文章信息的参数,比方:u 示意用户,o 示意文章ID,m 示意公布的媒体资讯平台的ID,用“-”连贯。 在加载这张固定图片的时候,获取 URL 上的参数而后进行解决。 lua_nginx_module 模块列一下须要用到的模块: lua_nginx_module (Nginx 的 Lua 模块)neturl(Lua 中解析 URL 的包)lua-resty-redis(Lua 中应用 Redis 的包)在 Nginx 中应用 lua 的形式曾经被广泛应用了,所以采纳这种形式。上面演示整个配置流程: 引入 lua-resty-redis 和 neturl咱们的服务器环境是应用 宝塔Linux 面板搭建的,外面曾经集成了 lua_nginx_module 模块,想要理解 Nginx 如何装置第三方模块的自行百度吧。 在 Nginx 的 http 中引入 lua 包: http { lua_package_path "/www/server/nginx_module/lua-resty-redis/lib/?.lua;/www/server/nginx_module/neturl/lib/?.lua;/www/server/nginx_module/local_media_mapp/lib/?.lua;;";}这里还引入了一个本人写的包,内容是我的项目须要的媒体资讯平台 ID 和域名映射关系,内容大抵如下: local site_map = {["1"]="www.baidu.com",["2"]="www.sina.com",["20"]="www.ngxtest.vip",...}return site_map图片参数解决在 http 中引入了 lua 包之后,接下来在 nginx server 块中解决图片携带的参数: ...

December 17, 2021 · 3 min · jiezi

关于nginx:为SSH登录设置电子邮件提醒

在本文中介绍如何在Linux零碎上为ssh登录设置电子邮件揭示。以接管无关对root用户的未经受权或非法登录拜访的警报。.bashrc文件是做什么的?.bashrc文件是一个脚本,每当以交互方式启动新的终端会话时,便会执行该脚本。 1)如何为root用户启用电子邮件警报以root用户身份登录,而后将以下一行脚本增加到root用户“ .bashrc”文件中以实现此目标: [root@localhost ~]# vim /root/.bashrc echo 'ALERT - SSH root shell access found on '$HOSTNAME' on:' date who | mail -s "Alert: SSH root shell access" root@localhost如何在Linux上为SSH登录设置电子邮件揭示如何在Linux上为SSH登录设置电子邮件揭示执行以下命令,使命令失效: [root@localhost ~]# source .bashrc 实现后,以root用户身份登录。将收到相似以下内容的邮件警报。如何在Linux上为SSH登录设置电子邮件揭示如何在Linux上为SSH登录设置电子邮件揭示将代码中的root@localhost改为本人用来接管邮件的邮箱。 2)如何为特定用户启用电子邮件警报须要将以下脚本增加到指定用户的.bashrc文件中: [root@localhost ~]# vim /home/bob/.bashrc echo 'ALERT - '$USER' shell access found on '$HOSTNAME' on:' date who | mail -s "Alert: User shell access" root@localhost如何在Linux上为SSH登录设置电子邮件揭示如何在Linux上为SSH登录设置电子邮件揭示将代码中的root@localhost改为本人用来接管邮件的邮箱。 登录后的提醒如下图:如何在Linux上为SSH登录设置电子邮件揭示如何在Linux上为SSH登录设置电子邮件揭示 3)如何为所有用户启用电子邮件警报为所有用户启用电子邮件报警和下面的配置相似。然而须要将以下脚本增加到/etc/bashrc文件最初一行中: [root@localhost ~]# vim /etc/bashrc echo 'ALERT - '$USER' shell access found on '$HOSTNAME' on:' date who | mail -s "Alert: User shell access" root@localhost如何在Linux上为SSH登录设置电子邮件揭示如何在Linux上为SSH登录设置电子邮件揭示 ...

December 15, 2021 · 1 min · jiezi

关于nginx:Nginx-常用配置清单

大家好,我是后端架构师。 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰盛的功能集、稳定性、示例配置文件和低系统资源的耗费受到了开发者的欢送。 侦听端口 server {# Standard HTTP Protocollisten 80;# Standard HTTPS Protocollisten 443 ssl;# For http2listen 443 ssl http2;# Listen on 80 using IPv6listen [::]:80;# Listen only on using IPv6listen [::]:80 ipv6only=on;}拜访日志 server {# Relative or full path to log fileaccess_log /path/to/file.log;# Turn 'on' or 'off' access_log on;}域名 server {# Listen to yourdomain.comserver_name yourdomain.com;# Listen to multiple domains server_name yourdomain.com www.yourdomain.com;# Listen to all domainsserver_name *.yourdomain.com;# Listen to all top-level domainsserver_name yourdomain.*;# Listen to unspecified Hostnames (Listens to IP address itself)server_name "";}动态资产 ...

December 2, 2021 · 1 min · jiezi

关于nginx:nginx-源码编译安装-https-stream模块

源码装置nginx 并增加https和stream模块筹备源码装置的介质介质名称作用nginxnginx的作用PCRE让 Nginx 反对 Rewrite 性能zlibsZlib是一个压缩和解压模块,应用这个模块能够做很多事件。opensslopenssl作用介质下载地址 提取码: z8tq 编译装置将介质下载 并上传到服务器 tar -zxvf pcre-8.45.tar.gz -C ./dep/cd ./dep/pcre-8.45/./configuremakemake install...以此类推 编译装置 zlibs和openssl最初装置nginx时 编译的门路须要指定./configure --with-http_ssl_module --with-stream --prefix='指定nginx装置的门路'而后make && make install启动nginx如果报错: openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory执行命令 ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1# 从新建设关系后 查看openssl版本openssl version启动nginx./nginxps -ef | grep nginx./configure 怎么用 nginx 动静增加openssl库

December 1, 2021 · 1 min · jiezi

关于nginx:Linux-一块物理网卡绑定多个-IP-地址

在 Linux 零碎中,能够通过设置 IP 别名的形式,实现一块物理网卡上绑定多个 IP 地址 在 Linux 上,IP 别名的设置有两种形式,一种是批改网络配置文件 ifcfg-eth0,一种是通过 ifconfig 和 route 命令进行设置。筹备在虚拟机(CentO S)192.168.102.209 上进行介绍。 批改网络配置文件 ifcfg-eth0进入 ifcfg-eth0 所在目录[root@centos1 ~]# cd /etc/sysconfig/network-scripts/复制配置文件依据须要设置 IP 别名的个数,复制对应个数的网络配置文件 ifcfg-eth0。这里复制两个别名配置,别离为:192.168.102.100 和 192.168.102.101。 [root@centos1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1[root@centos1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:2批改配置文件编辑配置文件 ifcfg-eth0:1 和 ifcfg-eth0:1,次要批改文件的参数项:DEVICE(网卡物理设施名称)和 IPADDR(IP 地址),NAME 是否批改随便。 TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"UUID="ad57cee4-5a95-4609-86c4-ccd6dab317ec"ONBOOT="yes"NETMASK="255.255.254.0"GATEWAY="192.168.102.1"DNS1="192.168.102.1"DNS2="114.114.114.114"NAME="eth0:1"DEVICE="eth0:1"IPADDR="192.168.102.100"重启 network[root@centos1 network-scripts]# systemctl restart network查看配置后果 ping 查看 ifconfig 和 route 命令ifconfig 和 route 命令配合应用能够轻松地实现 IP 别名的设置。其中 ifconfig 命令用来查看和配置网络设备,route 命令用于对路由的批改。 [root@centos1 ~]# ifconfig eth0:3 192.168.102.103 broadcast 192.168.103.255 netmask 255.255.254.0 up[root@centos1 ~]# route add -host 192.168.102.103 dev eth0:3CentOS 最小装置下没有 ifconfig 命令的,能够通过命令 yum install -y net-tools.x86_64 进行装置。 ...

November 30, 2021 · 1 min · jiezi

关于nginx:如何用gzip进行前端性能优化

一、简介HTTP 能够对传输的内容进行压缩,缩小网络理论传输数据的大小。原理就是 服务器对文件进行 gzip 压缩后,再进行传输,浏览器收到资源后再解压的过程。 对于 js、text、json、css 这种纯文本进行压缩,成果特地好,不必扭转代码即可晋升网站响应速度;压缩过程是须要破费 CPU 资源的,对大文件(图片、音乐等)进行压缩,不仅不能晋升网站响应速度,还会减少服务器压力,让网站有显著的卡顿感。二、nginx 开启 gzip服务器应用 nginx,浏览器应用 chrome,开启 gzip,看看理论优化的成果。 1、批改配置关上 nginx 的配置文件 sudo nano /etc/nginx/nginx.conf ,找到 gzip 对应区域,减少上面配置后,保留退出。 # 开启gzip,敞开用offgzip on;# 是否在http header中增加Vary: Accept-Encoding,倡议开启gzip_vary on;# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU工夫,举荐6gzip_comp_level 6;# 设置压缩所须要的缓冲区大小 gzip_buffers 16 8k;# 设置gzip压缩针对的HTTP协定版本gzip_http_version 1.1;# 抉择压缩的文件类型,其值能够在 mime.types 文件中找到。gzip_types text/plain text/css application/json application/javascript# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩gzip_min_length 1k;# gzip_proxied any;2、重启 nginx# 1、重启:sudo /etc/init.d/nginx restart# 2、从新加载配置文件,无需重启:sudo /etc/init.d/nginx reload3、查看 gzip 是否开启?关上网站;关上开发者工具(windows快捷键Control+Shift+J、Mac快捷键Command+Option+J);如下图,响应头中有 Content-Encoding: gzip ,示意曾经开启。 4、查看 gzip 压缩成果?关上网站;关上开发者工具(windows快捷键Control+Shift+J、Mac快捷键Command+Option+J);如下图,73.9kb示意是压缩后在网络传输的大小;574kb示意是理论文件的大小。 三、前端性能检测工具lighthouse 是谷歌的开源我的项目,一键即可查找出网站所有须要优化的内容和倡议。装置和应用,能够看这里! ...

November 27, 2021 · 1 min · jiezi

关于nginx:前端应该掌握的nginx知识

前言为什么要懂nginx?首先,进步本人的服务器部署能力其次,有助于了解后端接口链路ngix能干什么?解决跨域问题负载平衡动态服务器多/单页面网站gzip注释装置 & 常见命令 & nginx配置文件构造装置(以ubuntu 为例):$ sudo apt-get install nginx更多请查看:装置NGINX 查看版本: $ sudo nginx -v# 呈现版本信息示意装置胜利nginx version: nginx/1.6.2常见命令启动服务: $ nginx其余命令: $ nginx -s <SIGNAL>SIGNAL: quit – 失常敞开服务reload – 从新加载配置文件运行reopen – 关上日志文件stop – 立即敞开服务配置文件文件构造nginx的主配置文件是nginx.conf。 能够在主配置文件中去include 其余地位的配置文件。通过上述形式装置的来看: 默认配置文件门路/etc/nginx/nginx.conf这个文件里可能会有援用,比方include /etc/nginx/conf.d/*.conf;那么实际上你的我的项目配置文件就是在/etc/nginx/conf.d/这个文件夹下的所有.conf文件;个别一个我的项目(域名)配一个文件,比方你的域名是www.baidu.com,那么你的配置文件就能够叫/etc/nginx/conf.d/www.baidu.com.conf配置阐明main:nginx的全局配置,对全局失效。events:配置影响nginx服务器或与用户的网络连接。http:能够嵌套多个server,配置代理,缓存,日志定义等绝大多数性能和第三方模块的配置。server:配置虚拟主机的相干参数,一个http中能够有多个server。location:配置申请的路由,以及各种页面的解决状况。upstream:配置后端服务器具体地址,负载平衡配置不可或缺的局部。 解决跨域Http负载平衡负载平衡策略: 待补充配置upstream: upstream balanceServer { server 10.1.22.33:12345; server 10.1.22.34:12345; server 10.1.22.35:12345;}配置server: server { server_name fe.server.com; listen 80; location /api { proxy_pass http://balanceServer; } }动态服务器/data/static/ 提供目录浏览: server{ listen 80 default_server; server_name www.example.com; location ^~ /static { root /data/static/; # 设置拜访服务器下的文件目录 autoindex on; # 开启目录浏览 access_log off; # 敞开拜访日志 charset utf-8,gbk; #避免中文目录呈现乱码 expires 10h;# 设置过期工夫为10小时 } }查看更多:[nginx 开启目录浏览性能及主题丑化](https://ld246.com/article/156...) ...

November 25, 2021 · 2 min · jiezi

关于nginx:NGINX-入门到企业级应用实践基础篇

这是一系列收费的常识,有图文版和视频版,你当初看到的是图文版。 NGINX 系列课分为三篇,根底篇、进阶篇和企业实际篇,你当初正在浏览的是根底篇。 视频版公布在我本人的社区,喜爱看视频的敌人可返回社区,微信扫码登录或微信受权登录后即可播放。 写在后面根底篇学习目标:理解 NGINX,并可能本人入手操作,能独立实现负载平衡配置,并绑定域名,实现通过域名拜访后端服务。 NGINX系列课课学习目标:理解 NGINX、可能本人独立实现负载平衡配置、可能本人搭建高可用的企业级生产环境、对 NGINX 进行监控。 听过视频课的敌人曾经可能独立实现负载平衡配置了,还提交了作业 咱们这半年,将会输入十分多公开课,有图文版、有视频版。重要的是,这些都是收费的!!! 来了就能听。课程清单如下 其中绿色标注的是曾经公布的内容,红色的是正在筹备素材的内容。 NGINX 根底篇图文版好的,正题来了,开始吧。 如果平时接触后端或者服务器比拟少的敌人可能会问,NGINX 是什么? 对于它是什么,咱们能够援用 NGINX 官网和百度百科中的介绍,NGINX 是一款高性能的 HTTP 服务器,同时也是一款反向代理服务器(NGINX 官网原文称为 reverse proxy server)。除了反对 HTTP 协定外,还反对邮件协定、TCP/UDP 等。 它可能做什么? 在我看来,它其实是一款网关。作用 1 申请转发,作用 2 限流,作用 3 鉴权,作用 4 负载平衡。下面提到的反向代理 reverse proxy server,能够归类到申请转发。 正向代理,反向代理??? 太多情理咱们就不讲了,能够浏览其余平台上对于这个问题的解读 https://zhuanlan.zhihu.com/p/... 这里咱们简略总结一下,正向代理代理的对象是客户端,反向代理代理的对象是服务端。 做爬虫的敌人们,平时你们用的 IP 代理就是正向代理,爬虫程序通过代理,将申请转发给后端。而咱们提到的 NGINX 反向代理则是将客户端的申请转发到后端。从下面讲到的文章里借几张图 用 NGINX 的公司多吗? 大部分公司都有用到 NGINX,大至 Google Meta(Facebook) Amazon Alibaba Tencent HUAWEI,小至全世界 70%+ (我猜的,理论比这更多)的互联网企业,社区应用的也是 NGINX ...

November 23, 2021 · 4 min · jiezi

关于nginx:阿里云服务器搭建Nginxrtmp推流服务器

title: 阿里云服务器搭建Nginx+rtmp推流服务器categories:[Centos]tags:[音视频编程]date: 2021/11/16<div align = 'right'>作者:hackett</div> <div align = 'right'>微信公众号:加班猿</div> 一、后期筹备服务器操作系统:CentOS Linux release 8.4.2105 Nginx版本:nginx-1.18.0.tar.gz RTMP模块:nginx-rtmp-module 推流工具:OBS-Studio/VLC 拉流工具:VLC 二、搭建编译环境1.装置依赖新建的服务器先装置一些依赖,或者编译的时候看谬误须要什么就装置什么 sudo yum install gcc make pcre pcre-devel openssl openssl-devel2.下载nginx-1.18.0.tar.gz和nginx-rtmp-modulewget https://nginx.org/download/nginx-1.18.0.tar.gztar -zxvf nginx-1.18.0.tar.gz #解压git clone https://github.com/arut/nginx-rtmp-module3.配置和编译装置#nginx源码文件夹和rtmp模块源码文件夹在同一目录下cd nginx-1.18.0./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_modulesudo makesudo make install4.查看装置后果 /usr/local/nginx/sbin/nginx -v #输入nginx version: nginx/1.18.0即为装置胜利三、配置Nginx1.设置Nginx开机启动创立Nginx服务文件 vim /usr/lib/systemd/system/nginx.service创立Nginx服务文件,输出以下内容 [Unit]Description=nginx - high performance web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stop[Install]WantedBy=multi-user.target启动Nginx服务 sudo systemctl start nginx sudo systemctl enable nginx 2.批改Nginx的配置文件vim /usr/local/nginx/conf/nginx.conf批改前 ...

November 16, 2021 · 4 min · jiezi

关于nginx:在Centos8-中使用Stratis管理本地存储二

本文介绍如何通过向现有Stratis池中增加新磁盘和增加缓存磁盘。上面将介绍增加、删除、快照等内容。零碎环境Centos8向Stratis池中增加其余磁盘在Stratis治理下,将新的块设施增加到现有池非常容易。在上一篇文章《在Centos 中创立Stratis本地存储(一)》设置中,“ data01_pool”中有4个磁盘,当初咱们须要通过增加新磁盘来扩大池中的空间。应用选项add-data来增加新磁盘,上面向"data01_pool"池中增加"/dev/sde"磁盘。 [root@localhost ~]# stratis pool list Name Total Physical Propertiesdata01_pool 8 GiB / 1.11 GiB / 6.89 GiB ~Ca,~Cr[root@localhost ~]# stratis pool add-data data01_pool /dev/sde [root@localhost ~]# stratis pool list Name Total Physical Propertiesdata01_pool 10 GiB / 1.12 GiB / 8.88 GiB ~Ca,~Cr在Centos8 中应用Stratis治理本地存储(二)在Centos8 中应用Stratis治理本地存储(二)能够看到上图中扩大前是8G,扩大之后变成了10G。再查看一下stratis的块设施: [root@localhost ~]# stratis blockdev list 在Centos8 中应用Stratis治理本地存储(二)在Centos8 中应用Stratis治理本地存储(二) 重命名池和文件系统Stratis具备在运行中重命名池或文件系统的性能,而不会影响任何正在运行的设置。上面让咱们将以后池名称“data01_pool”重命名为“data01_pool_old”。 [root@localhost ~]# stratis pool rename data01_pool date01_pool_old在Centos8 中应用Stratis治理本地存储(二)在Centos8 中应用Stratis治理本地存储(二)上面咱们来重命名文件系统,重命名文件系统相似于重命名池: [root@localhost ~]# stratis fs rename date01_pool_old user_data01 sys_data01在Centos8 中应用Stratis治理本地存储(二)在Centos8 中应用Stratis治理本地存储(二) ...

November 13, 2021 · 1 min · jiezi

关于nginx:nginx-配置

1、配置proxy upstream kibana { ip_hash; server 192.168.32.128:5601; } server { listen 8080; server_name kibana.ops.com kibana2.ops.com; location / { proxy_pass http://kibana; } }

November 11, 2021 · 1 min · jiezi