核心指令
<h1>核心指令-Nginx基础应用</h1>
<h2>核心参数</h2>
<pre><code class="language-sehll">user
pid
worker_rlimit_core
worker_rlimit_nofile
worker_processes
worker_cpu_affinity
worker_priority
worker_shutdown_timeout
timer_resolution
daemon</code></pre>
<h2>事件模块常用参数</h2>
<ul>
<li>
<p>use</p>
<ul>
<li>nginx使用何种事件驱动模型worker_connections</li>
<li>worker子进程能够处理的最大并发连接数</li>
</ul>
</li>
<li>accept_mutex
<ul>
<li>是否打开负载均衡互斥锁</li>
</ul></li>
<li>accept_mutex_delay
<ul>
<li>新连接分配给worker子进程的超时时间</li>
</ul></li>
<li>lock_file
<ul>
<li>负载均衡互斥锁文件存放的路径</li>
</ul></li>
<li>muti_accept
<ul>
<li>worker子进程可以接收到的新连接个数</li>
</ul></li>
</ul>
<h2>server_name指令用法优先级</h2>
<ul>
<li>精确匹配</li>
<li>左侧通配符匹配</li>
<li>右侧通配符匹配</li>
<li>正则表达式匹配</li>
</ul>
<h2>root和alias的区别</h2>
<ul>
<li>
<p>相同点</p>
<ul>
<li>url到磁盘文件的映射</li>
</ul>
</li>
<li>
<p>区别</p>
<ul>
<li>root会将定义路径与url叠加</li>
<li>alias则只取定义路径</li>
<li>使用alias时,末尾一定加/,alias只能位于location块中</li>
</ul>
</li>
<li>
<p>举例</p>
<pre><code class="language-shell"># 1、客户端请求图片url地址:
www.test.com/picture/1.jpg
# 实际磁盘路径为:
/opt/nginx/html/picture/1.jpg
# 2、root路径为
/opt/nginx/html/picture/picture/1.jpg
# 3、alias路径为
/opt/nginx/html/picture/1.jpg</code></pre>
</li>
</ul>
<h2>location的作用</h2>
<ul>
<li>
<p>根据请求URI设置配置,实现了对请求的细分处理,有些 URI 返回静态内容,有些分发到后端服务器等</p>
</li>
<li>
<p>location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。</p>
</li>
<li>
<p>匹配符号含义</p>
<ul>
<li>
<p>= 精确匹配</p>
</li>
<li>
<p>~ 正则匹配,区分大小写</p>
</li>
<li>
<p>~* 正则匹配,不区分大小写</p>
</li>
<li>
<p>^~ 匹配到即停止搜索</p>
</li>
<li>不带任何符号</li>
</ul>
<pre><code class="language-nginx">location / { ... }</code></pre>
</li>
</ul>
<h2>location匹配符号优先级</h2>
<ul>
<li>=</li>
<li>^~</li>
<li>~</li>
<li>^~</li>
<li>不带任何符号</li>
</ul>
<h2>深入理解location中URL结尾的反斜线</h2>
<ul>
<li>
<p>url不带</p>
<pre><code class="language-nginx">location /test { ... }</code></pre>
<ul>
<li>nginx会将test作为一个目录处理,如果找到test目录,把test当做一个目录处理;</li>
<li>如果找不到test目录,nginx会尝试把test当成一个文件,返回给用户。</li>
</ul>
</li>
<li>
<p>url带/</p>
<pre><code class="language-nginx">location /test/ { ... }</code></pre>
<ul>
<li>nginx只会将test作为一个目录处理,相当于严谨写法</li>
</ul>
</li>
</ul>
<h2>stub_status模块用法</h2>
<ul>
<li>
<p>基本状态信息可从周围位置获取</p>
</li>
<li>
<p>用于查看Nginx的一些状态信息</p>
</li>
<li>
<p>使用的上下文中为</p>
<ul>
<li>server或location段中</li>
</ul>
</li>
<li>
<p>低于1.7.5.版本中写法</p>
<pre><code class="language-nginx">stub_status on;</code></pre>
</li>
<li>
<p>高于1.7.5.版本中写法</p>
<pre><code class="language-nginx">stub_status;</code></pre>
</li>
<li>
<p>实例</p>
<pre><code class="language-nginx"># location 斜杠后边的url地址要写的复杂一些,避免让用户猜到
location /monitor_status {
stub_status;
}</code></pre>
</li>
<li>
<p>stub_status模块,nginx返回相关参数说明</p>
<ul>
<li>Active connections</li>
<li>
<p>对后端发起的活动连接数.</p>
</li>
<li>accepts</li>
<li>
<p>接受的客户端连接总数量</p>
</li>
<li>request</li>
<li>
<p>客户端总请求数量</p>
</li>
<li>handled</li>
<li>
<p>处理的客户端连接总数量</p>
</li>
<li>Server accepts handled requests</li>
<li>
<p>Nginx总共处理了38810620个连接,成功创建38810620次握手(证明中间没有失败的),总共处理了298655730个请求.</p>
</li>
<li>Reading</li>
<li>
<p>Nginx 读取到客户端的Header信息数.</p>
</li>
<li>Writing</li>
<li>
<p>Nginx 返回给客户端的Header信息数.</p>
</li>
<li>Waiting</li>
<li>开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接</li>
</ul>
</li>
</ul>