nginx

centos7源码安装Nginx

為{幸葍}努か 提交于 2020-12-12 15:23:29
1、安装前准备工作 下载Nginx源码包,官网下载会有很多版本,注意版本号,偶数为稳定版,奇数为开发实验版 下载地址: http://nginx.org/en/download.html 2、安装编译环境、创建安装目录和用户 yum -y install gcc gcc-c++ pcre-devel zlib-devel mkdir /usr/local/nginx1.18 useradd -M nginx -s /sbin/nologin #创建Nginx用户,不设家目录,不允许登录系统 3、下载Nginx源码包 wget -c http://nginx.org/download/nginx-1.18.0.tar.gz 4、解压缩源码包 tar -zxf nginx-1.18.0.tar.gz 5、切换到解压后的源码目录 cd nginx-1.18.0 6、执行configure脚本生产编译配置文件Makefile ./configure --prefix=/usr/local/nginx1.18 --user=nginx --group=nginx &>/dev/null || echo $? #prefix指定安装路径,user和group指定运行权限的用户和组 make &>/dev/null || echo $? #编译二进制,并判断是否编译成功 make install

不改一行代码定位线上性能问题

时光怂恿深爱的人放手 提交于 2020-12-12 14:51:51
背景 最近时运不佳,几乎天天被线上问题骚扰。前几天刚解决了一个 HashSet 的并发问题,周六又来了一个性能问题。 大致的现象是: 我们提供出去的一个 OpenAPI 反应时快时慢,快的时候几十毫秒,慢的时候几秒钟才响应。 尝试解决 由于这种也不是业务问题,不能直接定位。所以尝试在测试环境复现,但遗憾的测试环境贼快。 没办法只能硬着头皮上了。 中途有抱着侥幸心里让运维查看了 Nginx 里 OpenAPI 的响应时间,想把锅扔给网络。结果果然打脸了; Nginx 里的日志也表明确实响应时间确实有问题。 为了清晰的了解这个问题,我简单梳理了这个调用过程。 整个的流程算是比较常见的分层架构: 客户端请求到 Nginx。 Nginx 负载了后端的 web 服务。 web 服务通过 RPC 调用后端的 Service 服务。 日志大法 我们首先想到的是打日志,在可能会慢的方法或接口处记录处理时间来判断哪里有问题。 但通过刚才的调用链来说,这个请求流程不短。加日志涉及的改动较多而且万一加漏了还有可能定位不到问题。 再一个是改动代码之后还会涉及到发版上线。 工具分析 所以最好的方式就是不改动一行代码把这个问题分析出来。 这时就需要一个 agent 工具了。我们选用了阿里以前开源的 Tprofile 来使用。 只需要在启动参数中加入 -javaagent:/xx/tprofiler.jar

.Net Core 3.0 Nginx not serving static files

穿精又带淫゛_ 提交于 2020-12-12 12:29:28
问题 I have a .net core 3.0 web application that I want to run on a Debian Buster service. I followed the Microsoft instructions found Here. I was able to get Nginx to serve the pages however none of the styles are showing up. Config file server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; } server { listen 80; server_name demo.cerebral.local; #ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; #ssl_certificate_key /etc/letsencrypt/live/yourdomain

.Net Core 3.0 Nginx not serving static files

笑着哭i 提交于 2020-12-12 12:29:19
问题 I have a .net core 3.0 web application that I want to run on a Debian Buster service. I followed the Microsoft instructions found Here. I was able to get Nginx to serve the pages however none of the styles are showing up. Config file server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; } server { listen 80; server_name demo.cerebral.local; #ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; #ssl_certificate_key /etc/letsencrypt/live/yourdomain

tcp keepalive与http keep-alive

一曲冷凌霜 提交于 2020-12-12 09:11:46
1、长连接 HTTP长连接和短连接,其本质是TCP连接,HTTP是应用层的协议,基于请求/响应模式,而TCP是传输层协议,只有负责传输的这一层才需要建立连接。 长连接情况下,多个HTTP请求可以复用同一个TCP连接,节省TCP连接建立和断开的消耗; 2、http keep-alive HTTP协议采用请求/应答模式,使用非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开TCP连接;使用Keep-Alive模式时,可以复用同一个TCP连接,Keep-Alive功能避免了重新建立TCP连接。 keep-alive常用参数: keepalive_timeout; keepalive_requests; 3、tcp keepalive TCP keepalive用来检测tcp建立连接后,是否有应用报文传输,如果在参数tcpkeepalivetime、tcpkeepaliveprobes之外,则断开TCP连接; 在Linux系统没有全局的选项开启TCP的KeepAlive,必须在TCP的socket中单独开启; Linux Kernel有三个选项影响到KeepAlive的行为: 1.net.ipv4.tcpkeepaliveintvl = 75 2.net.ipv4.tcpkeepaliveprobes = 9 3.net.ipv4

硬核干货!Redis 分布式集群部署实战

僤鯓⒐⒋嵵緔 提交于 2020-12-12 07:51:31
原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储。 集群使用公式(CRC16 key)& 16384计算键key数据那个槽。 16384个slot均匀分布在各个节点上。 集群中每个主节点将承担一部分槽点的维护,而槽点中存储着数据,每个主节点都有至少一个从节点用于高可用。 节点通信方式: 开启一个端口 设置的端口号+10000,用于集群之间节点通信交换信息。 每个节点默认每秒10次选择随机5个节点发送ping消息,将自身信息和知道的集群信息传递,收到ping消息后返回pong消息做回复,最后通过这种随机的消息交换,最终每个节点将获得所有信息。 当某个主节点挂掉,所有节点将会发现主节点挂掉了,作为主节点的从节点,就会接替主节点的工作,然后告诉所有其它节点,他成为了主。这样其它存活节点,就将它们维护的信息表更新从节点将接任做主,如果都挂掉集群将报错。当从一个节点操作,根据一致性哈希计算后将存储在其中一个主节点中,从节点将同步主的数据。 redis cluster是去中心化的,集群中的每个节点都是平等的关系,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃。 搭建集群时,会为每一个分片的主节点,对应一个从节点。实现slaveof功能,同时当主节点down

分布式文件系统之FastDFS

喜夏-厌秋 提交于 2020-12-12 07:17:40
环境引入:   在一个大型的教育官网,会拥有大量优质的视频教程,并且免费提供给用户去下载,文件太多如果高效存储?用户访问量大如何保证下载速度?分布式文件系统是解决这些问题的有效方法之一 一、什么是文件系统   分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地 驱动器 一样。                                                                      -----------------百度百科 为什么需要 :以前,我们将上传的视屏文件等放在一台宿主机内,如果一个盘符内存不够,就增加硬盘个数,但是单纯的增加硬盘个数已经无法满足当代的需求,毕竟硬盘访问速度有限 解决方式 :增加计算机个数,将视屏分别放在不同计算机内,通过网络将一个一个计算机的文件系统连接起来组成一个网络文件系统,形成一个分布式网络 优点 :用于扩容、高并发场景     1

Failed to reload nginx.service: Interactive authentication required

放肆的年华 提交于 2020-12-12 05:43:32
问题 I am working on project using symfony 3, the project run on nginx server and i am trying to reload the configuration files with the following command: "systemctl reload nginx" from the controller. /** * @Route("/testReloadConfig") */ public function testReloadConfigAction(Request $request){ $output = []; $result = null; $cmd = 'systemctl reload nginx 2>&1'; exec($cmd, $output, $result); return new JsonResponse([ 'result' => $result, 'output' => $output, ]); } The response: {"result":1,"output

Nginx 代理 10003 redirect_uri域名与后台不一致

佐手、 提交于 2020-12-12 01:52:33
net iis多个网站 通过Nginx转发代理出去 正常都ok:见 upstream wx.xxxxx.org { server 127.0.0.1:8081; } server { listen 80; server_name wx.xxxxx.org; location /{ proxy_pass http: //wx .xxxxx.org; } 然而 微信授权提示 这个应该怎么办呢 : net 后端获取方法 :Request.Headers["request_url"]; 查看原因后发现会带上端口: wx.xxxxx.org:8011 解决方案如下: upstream wx.xxxxx.org { server 127.0.0.1:8081 ; } server { listen 80 ; server_name wx.xxxxx.org; location /{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http: // wx.xxxxx.org; }

linux多线程下的fwrite和write使用详解

ぃ、小莉子 提交于 2020-12-11 23:59:25
Linux下的文件操作,有人喜欢用C库的文件流操作,有人喜欢用Linux的原生的系统调用。一般来说,C库的文件操作会更高效一些,因为C库自己做了文件缓存的处理。今天,主要研究多线程下的fwrite与write,每个线程都对相同的FILE*或者fd进行写操作,看看结果是否为预期行为。 第一种情况:使用C库的fwrite,其线程的实现如下: 第二种情况:使用系统调用write,其线程的实现如下: 下面看主线程的实现: 其中LOOPS定义为1000000。也就是说,线程1~3分别写入"aaaaaa\n",“bbbbbb\n”,和"cccccc\n"各一百万次。如果写入文件的操作是“线程安全”的,那么最终的文件行数应该是3百万行,且每行只可能是"aaaaaa"、“bbbbbb”、和"cccccc"的一种。 【文章福利】需要C/C++ Linux服务器架构师学习资料加群812855908(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等) 接下来看测试结果: 1、定义了宏USE_CLIB,即使用C库的fwrite,其结果如下: 2、注释掉红USE_CLIB,即直接使用系统调用write,其结果如下: