关于nginx-module:Nginx入门笔记

目录什么是反向代理 正向代理反向代理Nginx过程模型 Worker抢占机制Nginx事件处理配置文件 配置构造次要配置常用命令日志宰割 定时工作宰割日志配置一个动态文件应用GZIP压缩Location匹配规定跨域的形式 同源策略跨域资源共享 反向代理两者比拟配置防盗链负载平衡 负载平衡算法负载平衡实例长连贯优化nginx缓存 管制浏览器缓存反向代理缓存配置SSL证书 证书装置(腾讯云)HTTP 主动跳转 HTTPS 的平安配置(可选)参考NginxNginx是高性能的http和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务 次要性能有 反向代理通过配置文件实现集群和负载平衡动态资源虚拟化什么是反向代理正向代理正向代理→代理客户端:客户端无奈间接从将申请送达指标服务器,能够通过可能申请到指标服务器的代理服务器转发申请到指标服务器,并将从指标服务器获取的内容返回给客户端,这就是正向代理。 正向代理的典型用处是为在防火墙内的局域网客户端提供拜访Internet的路径,就比如说咱们再居家办公的时候须要通过vpn拜访内网环境,vpn起到的作用就是正向代理。 正向代理能够应用缓存个性缩小网络使用率。 反向代理反向代理→代理服务端:客户端不晓得服务器的理论地址,通过拜访代理服务器由其将申请转发到相应的服务器上。 反向代理的作用 爱护和隐匿原始服务器 反向代理能够不让客户端间接拜访到原始资源服务器 负载平衡 反向代理服务器能够将多个客户端申请通过负载平衡算法将这些申请散发到不同的服务器上以加重单个服务器的压力,当然,反向代理服务器也能够有多个组成代理服务器集群。 缓存 反向代理服务器能够像正向代理服务器那样领有缓存的作用,能够将原始资源服务器返回的动态资源等数据进行缓存,进步申请效率,这也是CDN技术的外围。 路由 能够通过域名中的路由等信息将申请进行散发到不同的服务器上,这点与负载平衡有点像,然而负载平衡次要目标是为了均衡各个服务器的压力,路由是将需要不同的申请散发到不同的服务器。 Nginx过程模型nginx中可分为主过程(master)和工作过程(worker),master过程次要是用来治理woker进行,工作过程能够有多个,然而默认只有1个。 [root@VM-24-13-centos nginx-1.22.0]# ps aux|grep nginxroot 2868 0.0 0.0 22292 1456 ? Ss Jul25 0:00 nginx: master process ./nginxnobody 18991 0.0 0.0 24376 1768 ? S 20:24 0:00 nginx: worker process能够通过worker_processes配置来指定工作进行的数量 #user nobody;worker_processes 2;[root@VM-24-13-centos nginx-1.22.0]# ps aux|grep nginxroot 2868 0.0 0.0 22292 1456 ? Ss Jul25 0:00 nginx: master process ./nginxnobody 23812 0.0 0.0 24376 1492 ? S 20:49 0:00 nginx: worker processnobody 23813 0.0 0.0 24376 1492 ? S 20:49 0:00 nginx: worker processmaster过程次要是发送以下命令给worker过程使其进行、重启等 ...

August 21, 2022 · 7 min · jiezi

关于nginx-module:ngtemplate-使用过程中默认参数不能按照期望工作的问题单步调试

<article class=“article fmt article-content”><p>本文波及到的代码,位于这个 Github 仓库:https://github.com/wangzixi-d…</p><h1>问题形容</h1><p>我应用如下代码进行 ng-template 模板的参数传递:</p><pre><code class=“html”><ng-template #inputTemplateWithContent let-param let-name=“name”> <div>参数1: {{param}}</div> <div>参数2: {{name}}</div></ng-template></code></pre><p><span class=“img-wrap”></span></p><p>这里对于上图的代码地位 2,我用关键字 <code>let-</code>,定义了一个仅模板里可能拜访的局部变量 <code>name</code>,其数据源来自传入该模板的上下文对象 context 的同名属性 <code>name</code>。</p><p>而对于代码地位1 处的 param,我没有指定其映射到上下文对象中的属性名,因而我冀望它应用上下文对象里的默认<code>同名</code>属性,因而最初第一个 div 元素里应该显示属性 <code>param</code> 的值:<code>默认值</code>。</p><p><span class=“img-wrap”></span></p><p>然而理论的执行后果却是,第一个 div 元素显示的值为空:</p><p><span class=“img-wrap”></span></p><h1>问题剖析</h1><p>这个问题的本源是如何将上下文对象里的某个属性作为<code>默认</code>属性,传递给模板。</p><p>在 Angular 官网里找到了这样的对于默认值的文档:</p><p><span class=“img-wrap”></span></p><p>上下文对象的精确含意:</p><blockquote>附加到 EmbeddedViewRef 的上下文对象。 这应该是一个 JSON 对象,该对象的键将可用于本地模板 let 申明的绑定。 在上下文对象中应用键 $implicit 会将其值设置为默认值。</blockquote><p>文档提到,默认属性应该用 <code>$implicit</code> 来标识。</p><p>咱们在源代码里依据关键字 <code>$implicit</code> 搜寻,找到了常量 <code>IMPLICIT_REFERENCE</code>,再依据该常量搜寻,就能找到 Angular 框架源代码解析 <code>$implicit</code> 之处:</p><p><span class=“img-wrap”></span></p><p>这里咱们就能找到 Angular 解析 template variable 的逻辑:</p><p><span class=“img-wrap”></span></p><p><code>InterpolationConfig</code> 的 start 和 end 符号:<code>{{</code>, <code>}}</code></p><p><span class=“img-wrap”></span></p><h1>解决方案</h1><p>将下图图例1地位处的 <code>param</code> 批改成 <code>$implicit</code> 即可:</p><p><span class=“img-wrap”></span></p><h1>总结</h1><p>从上面这个调用栈里还能察看到模板里蕴含的 HTML 元素,在内存中对应的 DOM 节点:</p><p><span class=“img-wrap”></span></p><p>ng-template, ng-container 和 br,别离对应 HTML 文件里上面三个元素:</p><p><span class=“img-wrap”></span></p></article> ...

March 5, 2022 · 1 min · jiezi