<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nginx</title>
    <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/</link>
    <description>阿征的运维笔记</description>
    <language>zh</language>
    <atom:link href="https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>LNMP</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/lnmp/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/lnmp/</guid>
      <description>&lt;h1 id=&#34;lnmp-概述&#34;&gt;LNMP 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#lnmp-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;L&lt;/strong&gt;：Linux&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;N&lt;/strong&gt;：Nginx&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;M&lt;/strong&gt;：MySQL&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;P&lt;/strong&gt;：&amp;lt;PHP、python、Perl&amp;gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;fastcgi&#34;&gt;FastCGI&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#fastcgi&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;cgi-概述&#34;&gt;CGI 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#cgi-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;common gateway interface 通用网关接口&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;FastCGI解决了语言解释器和 Web Server 之间通讯的问题，主要是帮助 Web Server 处理动态请求 处理完毕后再将数据返回给 Web Server&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;CGI 和 FastCGI的区别：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;CGI：Web Server 每收到一个请求都会创建一个 CGI 进程，处理请求结束时会关闭进程&lt;/li&gt;&#xA;&lt;li&gt;FastCGI：处理完请求后不会关闭CGI进程，而是保留这个进程，使这个进程可以处理多个请求&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;php-fpm-概述&#34;&gt;php-fpm 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#php-fpm-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;FastCGI Process Manager：FastCGI 进程管理器&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;是一个实现了 FastCGI 的程序，并且提供进程管理功能&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;进程包括 master 进程 和 worker 进程&#xA;&lt;ul&gt;&#xA;&lt;li&gt;master 进程：只有一个，负责监听端口，接受来自 Web Server 的请求&lt;/li&gt;&#xA;&lt;li&gt;worker 进程：一般会有多个，每个进程中会嵌入一个 PHP 解释器 来进行php代码的处理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fastcgi-核心指令&#34;&gt;FastCGI 核心指令&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#fastcgi-%e6%a0%b8%e5%bf%83%e6%8c%87%e4%bb%a4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;由 ngx_http_fastcgi_module 模块提供此功能&lt;/li&gt;&#xA;&lt;li&gt;实现通过 fastcgi协议 将 客户端的动态请求 转发至 php-fmp 处理&lt;/li&gt;&#xA;&lt;li&gt;官方文档：https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;fastcgi_pass&#34;&gt;fastcgi_pass&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#fastcgi_pass&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;定义转发的后端 fastcgi server 地址&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Syntax：fastcgi_pass address;&lt;/li&gt;&#xA;&lt;li&gt;Default：—&lt;/li&gt;&#xA;&lt;li&gt;Context：location, if in location&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;fastcgi_index&#34;&gt;fastcgi_index&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#fastcgi_index&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;定义 fastcgi server 默认主页位置，如：fastcgi_index、index.php&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Syntax：fastcgi_index name;&lt;/li&gt;&#xA;&lt;li&gt;Default：—&lt;/li&gt;&#xA;&lt;li&gt;Context：http, server, location&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;fastcgi_param&#34;&gt;fastcgi_param&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#fastcgi_param&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;定义传递给fastcgi服务器的参数值，可以是文本，变量或组合&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>变量</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%8F%98%E9%87%8F/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%8F%98%E9%87%8F/</guid>
      <description>&lt;h1 id=&#34;nginx-变量前言&#34;&gt;Nginx 变量前言&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nginx-%e5%8f%98%e9%87%8f%e5%89%8d%e8%a8%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;在 Nginx 中，变量是用来存储和传递数据的容器。可以将它们看作是一些可变的值，可以在 Nginx 配置中使用，以便在运行时生成不同的内容或进行特定的操作，例如：作为功能判断或日志等场景&lt;/p&gt;&#xA;&lt;p&gt;Nginx 变量可以分为两类：内置变量和自定义变量。&lt;/p&gt;&#xA;&lt;h1 id=&#34;nginx-内置变量&#34;&gt;Nginx 内置变量&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nginx-%e5%86%85%e7%bd%ae%e5%8f%98%e9%87%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Nginx 内置变量是由 Nginx 提供的一组预定义变量；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;通过内置变量可以获取到众多的与客户端访问相关的值，可以在配置文件中直接使用。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;参考文档：https://nginx.org/en/docs/varindex.html&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;常用的内置变量包括：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;remote_addr&#34;&gt;$remote_addr&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#remote_addr&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;客户端 IP 地址，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;112.39.61.13&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;server_addr&#34;&gt;$server_addr&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#server_addr&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;服务器的IP地址，注意：显示的是服务器网卡的真实IP 包括局域网IP，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;172.27.185.115&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;server_name&#34;&gt;$server_name&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#server_name&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;当前请求的虚拟主机名，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;xiangzheng.vip&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;server_port&#34;&gt;$server_port&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#server_port&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;服务器的端口号，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;80&lt;/li&gt;&#xA;&lt;li&gt;443&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upstream_response_time&#34;&gt;$upstream_response_time&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#upstream_response_time&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;后端应用服务器处理时间&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upstream_addr&#34;&gt;$upstream_addr&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#upstream_addr&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;后端服务器地址&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;proxy_add_x_forwarded_for&#34;&gt;$proxy_add_x_forwarded_for&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#proxy_add_x_forwarded_for&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;此变量表示将客户端的IP追加请求报文中 X-Forwarded-For 首部字段，多个IP之间用逗号分隔，如果请求中没有 X-Forwarded-For，就使用 $remote_addr&lt;/li&gt;&#xA;&lt;li&gt;X-Forwarded-For头信息可以有多个，中间用逗号分隔，第一项为真实的客户端ip，剩下的就是曾经经过的代理或负载均衡的ip地址，经过几个就会出现几个。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;document_root&#34;&gt;$document_root&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#document_root&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;当前请求资源的系统根目录位置，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;/data/web/pc/html&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;document_uri&#34;&gt;$document_uri&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#document_uri&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不包含参数的URI&lt;/li&gt;&#xA;&lt;li&gt;假设访问的网站为 &lt;a href=&#34;https://www.azheng.com/echo/index-1000002662.html?from=pc&#34;&gt;www.azheng.com/echo/index-1000002662.html?from=pc&lt;/a&gt; ，那么此变量的返回结果将是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;/echo/index-1000002662.html&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;uri&#34;&gt;$uri&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#uri&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;请求 URI，不包括主机名和参数部分。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;args&#34;&gt;$args&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#args&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RUL的参数，请求的参数部分。&lt;/li&gt;&#xA;&lt;li&gt;假设访问的网站为 &lt;a href=&#34;https://www.azheng.com/echo/index-1000002662.html?from=pc&#34;&gt;www.azheng.com/echo/index-1000002662.html?from=pc&lt;/a&gt; ，那么此变量的返回结果将是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;from=pc&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;request_uri&#34;&gt;$request_uri&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#request_uri&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;完整uri，相当于 $document_uri+$args&lt;/li&gt;&#xA;&lt;li&gt;假设访问的网站为 &lt;a href=&#34;https://www.azheng.com/echo/index-1000002662.html?from=pc&#34;&gt;www.azheng.com/echo/index-1000002662.html?from=pc&lt;/a&gt; ，那么此变量的返回结果将是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;/echo/index-1000002662.html?from=pc&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;scheme&#34;&gt;$scheme&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#scheme&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;请求的协议，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;http、https、ftp 等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;host&#34;&gt;$host&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#host&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;请求行中的主机名，或“主机”请求头字段中的主机名，或与请求匹配的服务器名&lt;/li&gt;&#xA;&lt;li&gt;假设访问的网站为 &lt;a href=&#34;https://www.azheng.com/echo/index-1000002662.html?from=pc&#34;&gt;www.azheng.com/echo/index-1000002662.html?from=pc&lt;/a&gt; ，那么此变量的返回结果将是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.azheng.com&#34;&gt;www.azheng.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;request_filename&#34;&gt;$request_filename&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#request_filename&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;当前请求的文件路径，基于根或别名指令以及请求URI&lt;/li&gt;&#xA;&lt;li&gt;假设访问的网站为 &lt;a href=&#34;https://www.azheng.com/echo/index-1000002662.html?from=pc&#34;&gt;www.azheng.com/echo/index-1000002662.html?from=pc&lt;/a&gt; ，root中定义的路径为/data/web/pc/html，那么此变量的返回结果将是：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;/data/web/pc/html/echo/index-1000002662.html&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;request_method&#34;&gt;$request_method&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#request_method&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;请求方法，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GET、POST、HEAD、DELETE 等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;server_protocol&#34;&gt;$server_protocol&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#server_protocol&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;客户端请求协议的版本，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;HTTP/1.0、HTTP/1.1、HTTP/2.0 等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;http_user_agent&#34;&gt;$http_user_agent&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#http_user_agent&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;客户端浏览器的 User-Agent 信息&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;http_referer&#34;&gt;$http_referer&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#http_referer&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;表示请求来源的 URL。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;http_name&#34;&gt;$http_&amp;lt;name&amp;gt;&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#http_name&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;name为任意请求报文首部字段，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$http_user_agent 客户端浏览器的详细信息，如：curl/7.68.0&lt;/li&gt;&#xA;&lt;li&gt;$http_cookie 客户端的cookie信息&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;cookie_name&#34;&gt;$cookie_&amp;lt;name&amp;gt;&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#cookie_name&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;name为任意请求报文首部字段cookie&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;request_time&#34;&gt;$request_time&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#request_time&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;总的处理时间&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;其他常用内置变量&#34;&gt;其他常用内置变量&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%85%b6%e4%bb%96%e5%b8%b8%e7%94%a8%e5%86%85%e7%bd%ae%e5%8f%98%e9%87%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$args&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 存放了请求url中的请求指令。比如http://www.myweb.name/server/source?arg1=value1&amp;amp;arg2=value2 中的 arg1=value1&amp;amp;arg2=value2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$content_length&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 存放请求头中的Content-length字段。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$content_type&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 存放请求头中的Content-Type字段。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$document_root&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 存放当前请求在root指令中指定的值。(即当前请求的根路径)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 存放了请求url中的主机字段，比如比如http://www.myweb.name/server/source?arg1=value1&amp;amp;arg2=value2 中的 www.myweb.name。如果请求中的主机部分字段不可用或者为空，则存放nginx配置中该server块中server_name指令的配置值&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$http_user_agent&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 存放客户端agent信息&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$http_cookie&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 存放客户端cookie信息&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$limit_rate&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 这个变量可以限制连接速率。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$request_method&lt;/span&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# 客户端请求的动作，通常为GET或POST。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 客户端的IP地址。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$remote_port&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 客户端的端口。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$remote_user&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 已经经过Auth Basic Module验证的用户名。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$request_filename&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 当前请求的文件路径，由root或alias指令与URI请求生成。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$scheme&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# HTTP方法（如http，https）。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$server_protocol&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 请求使用的协议，通常是HTTP/1.0或HTTP/1.1。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$server_addr&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 服务器地址，在完成一次系统调用后可以确定这个值。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$server_name&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 服务器名称。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$server_port&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 请求到达服务器的端口号。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$request_uri&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 包含请求参数的原始URI，不包含主机名，如”/foo/bar.php?arg=baz”。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$uri&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 不带请求参数的当前URI，$uri不包含主机名，如”/foo/bar.html”。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$document_uri&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 与$uri相同。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;nginx-自定义变量&#34;&gt;Nginx 自定义变量&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nginx-%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%98%e9%87%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;自定义变量是用户在 Nginx 配置中定义的变量。它们可以通过 set 指令创建，并且可以在配置文件中的任何地方使用。自定义变量的语法为：&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>第三方模块</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E7%AC%AC%E4%B8%89%E6%96%B9%E6%A8%A1%E5%9D%97/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E7%AC%AC%E4%B8%89%E6%96%B9%E6%A8%A1%E5%9D%97/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Nginx的第三方模块是由Nginx社区或其他独立开发者创建的扩展，可以用来扩展或增强Nginx的功能。这些第三方模块可以添加新的功能、提高性能、增强安全性、实现特定用途等等。&lt;/p&gt;&#xA;&lt;h1 id=&#34;常用第三方模块&#34;&gt;常用第三方模块&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b8%b8%e7%94%a8%e7%ac%ac%e4%b8%89%e6%96%b9%e6%a8%a1%e5%9d%97&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;ngx_http_geoip_module：用于将IP地址转换为地理位置信息，可以根据客户端的位置提供不同的服务。&lt;/li&gt;&#xA;&lt;li&gt;ngx_http_lua_module：通过Lua脚本语言扩展Nginx的功能，可以实现高度灵活的配置和动态处理请求。&lt;/li&gt;&#xA;&lt;li&gt;ngx_http_image_filter_module：可以缩放、裁剪、旋转和转换图像格式等等，可以用于图片处理或优化。&lt;/li&gt;&#xA;&lt;li&gt;ngx_http_auth_pam_module：使用PAM（Pluggable Authentication Modules）来验证用户身份，可以与系统用户数据库集成。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;要使用这些第三方模块，您需要在编译Nginx时将其包含在内，并在Nginx配置文件中相应地配置。虽然第三方模块可以为Nginx增加很多有用的功能，但是需要注意的是，不同的第三方模块可能与不同版本的Nginx兼容性不同，因此需要仔细查看相应的文档并确认兼容性。&lt;/p&gt;&#xA;&lt;h1 id=&#34;加载第三方模块&#34;&gt;加载第三方模块&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%8a%a0%e8%bd%bd%e7%ac%ac%e4%b8%89%e6%96%b9%e6%a8%a1%e5%9d%97&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;要在Nginx中加载第三方模块，您需要按照以下步骤进行操作：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;首先，您需要获取所需的第三方模块的源代码或二进制文件。通常，第三方模块的开发者会提供相应的源代码或二进制文件。&lt;/li&gt;&#xA;&lt;li&gt;接下来，您需要重新编译Nginx，并在编译时包含第三方模块。您可以使用以下命令来重新编译Nginx并包含第三方模块：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure --add-module&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/path/to/third-party/module&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;这里的&lt;code&gt;/path/to/third-party/module&lt;/code&gt;是您要包含的第三方模块的路径。您可以在configure命令中使用多个&lt;code&gt;--add-module&lt;/code&gt;选项来同时包含多个第三方模块。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;编译完成后，您需要在Nginx配置文件中启用第三方模块。通常情况下，第三方模块的开发者会提供相应的配置说明，您只需要按照说明进行配置即可。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;注意：在加载第三方模块之前，请确保您的Nginx版本与第三方模块兼容。某些第三方模块可能不支持最新版本的Nginx，因此您需要仔细查看相应的文档并确认兼容性。&lt;/p&gt;&#xA;&lt;h1 id=&#34;echo&#34;&gt;echo&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#echo&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;nginx 第三方模块 echo 可以用于在 nginx 配置中输出 HTTP 响应的内容，通常用于调试和测试目的。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/openresty/echo-nginx-module&#34;&gt;https://github.com/openresty/echo-nginx-module&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;安装-echo-模块&#34;&gt;安装 echo 模块&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%ae%89%e8%a3%85-echo-%e6%a8%a1%e5%9d%97&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;clone完源码包后，重新编译&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# echo 模块源码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ls -l /usr/local/src/echo-nginx-module/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;76&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;3184&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;1345&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 LICENSE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root &lt;span class=&#34;m&#34;&gt;54504&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 README.markdown&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 src&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; root root  &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; root root    &lt;span class=&#34;m&#34;&gt;55&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 util&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root root   &lt;span class=&#34;m&#34;&gt;986&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 18:21 valgrind.suppress&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 编译前&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ls -l /apps/nginx/sbin/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;7420&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rwxr-xr-x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; nginx nginx &lt;span class=&#34;m&#34;&gt;7596456&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 14:00 nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 获取编译时的选项&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# nginx -V&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 编译，主要添加 --add-module=PATH 选项来指定第三方模块的路径&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# cd /usr/local/src/nginx-1.18.0/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/usr/local/src/echo-nginx-module&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# make &amp;amp;&amp;amp; make install&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 编译后&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ls -l /apps/nginx/sbin/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;15364&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rwxr-xr-x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; root  root  &lt;span class=&#34;m&#34;&gt;8131576&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt; 23:19 nginx &lt;span class=&#34;c1&#34;&gt;# 新的！&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rwxr-xr-x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; nginx nginx &lt;span class=&#34;m&#34;&gt;7596456&lt;/span&gt; Apr  &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 14:00 nginx.old&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;echo-模块的使用&#34;&gt;echo 模块的使用&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#echo-%e6%a8%a1%e5%9d%97%e7%9a%84%e4%bd%bf%e7%94%a8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;范例一&#34;&gt;范例一&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%8c%83%e4%be%8b%e4%b8%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/echo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Hello,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;world!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# curl www.azheng.com/echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Hello,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;world!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;范例二&#34;&gt;范例二&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%8c%83%e4%be%8b%e4%ba%8c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;下面是一个使用 echo 模块和一些自定义和内置变量的示例配置：&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>基础</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%9F%BA%E7%A1%80/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%9F%BA%E7%A1%80/</guid>
      <description>&lt;h1 id=&#34;io-模型&#34;&gt;I/O 模型&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#io-%e6%a8%a1%e5%9e%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;io-概述&#34;&gt;I/O 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#io-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I/O 就是把数据从内核空间中的内存数据 &lt;strong&gt;复制到&lt;/strong&gt; 用户空间进程的内存当中&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;io-分类&#34;&gt;I/O 分类&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#io-%e5%88%86%e7%b1%bb&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Linux 中的 I/O&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;磁盘 I/O&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;磁盘 I/O 是进程向内核发起的系统调用；&lt;/li&gt;&#xA;&lt;li&gt;假设请求磁盘上的某个资源，比如说 html 文件或者图片：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;内核会通过相应的驱动程序将目标文件加载到内核的内存空间，加载完成之后把数据从内核内存再复制给进程内存&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;网络 I/O&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;一切皆文件，本质就是对 socket 文件的读写&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;总结：&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;无论是磁盘I/O还是网络I/O，每次I/O都要经由两个阶段：&#xA;&lt;ol&gt;&#xA;&lt;li&gt;先将数据加载至内核内存空间（缓冲区），时间较长&lt;/li&gt;&#xA;&lt;li&gt;然后将数据从内核缓冲区复制到用户空间进程的内存，时间较短&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;同步与异步&#34;&gt;同步与异步&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%90%8c%e6%ad%a5%e4%b8%8e%e5%bc%82%e6%ad%a5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;同步与异步 &lt;strong&gt;关注的是消息通信机制&lt;/strong&gt;，即调用者在等待一件事情的处理结果时，被调用者是否提供完成状态的通知&lt;/p&gt;&#xA;&lt;p&gt;同步 synchronous；被调用者并不提供事件的处理结果相关的通知信息，需要被调用者主动询问事件是否处理完成&lt;/p&gt;&#xA;&lt;p&gt;异步 asynchronous；被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态&lt;/p&gt;&#xA;&lt;h2 id=&#34;阻塞与非阻塞&#34;&gt;阻塞与非阻塞&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%98%bb%e5%a1%9e%e4%b8%8e%e9%9d%9e%e9%98%bb%e5%a1%9e&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;阻塞与非阻塞 &lt;strong&gt;关注调用者在等待结果返回之前所处的状态&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;阻塞 blocking；指IO操作需要彻底完成后才返回结果到用户空间，调用结果返回之前，调用者被挂起，干不了别的事情&lt;/p&gt;&#xA;&lt;p&gt;非阻塞 nonblocking；指IO操作被调用后立即返回给用户一个状态值，而无需等到IO操作彻底完成，在最终的调用结果返回之前，调用者不会被挂起，可以去做别的事情&lt;/p&gt;&#xA;&lt;h2 id=&#34;小结&#34;&gt;小结&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b0%8f%e7%bb%93&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;**假设用水壶烧水这件事举例：**启动水壶后；&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;需要定期关注水是否烧开(同步)，期间不能做其他事情(阻塞)，这就是同步/阻塞。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;需要定期关注水是否烧开(同步)，期间可以去做别的事情(非阻塞)，这就是同步/非阻塞。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;水烧开后水壶会发出水烧开的信号来提醒我(异步)，期间不能做其他事情(阻塞)，这就是异步/阻塞。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;水烧开后水壶会发出水烧开的信号来提醒我(异步)，期间可以去做别的事情(非阻塞)，这就是异步/非阻塞。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;nginx-概述&#34;&gt;Nginx 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nginx-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;nginx是一个性能优异的web服务器应用，并且还能提供强大的反向代理功能&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;为什么这么快&#34;&gt;为什么这么快&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e4%b9%88%e5%bf%ab&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;epoll 模型&lt;/li&gt;&#xA;&lt;li&gt;支持sendfile零复制技术&#xA;&lt;ul&gt;&#xA;&lt;li&gt;即将数据从磁盘中读出后进入内核空间后直接发送给soket缓存区，从而省略了user缓存这一步&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;特性&#34;&gt;特性&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e7%89%b9%e6%80%a7&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;模块化设计、较好的扩展性&lt;/li&gt;&#xA;&lt;li&gt;高可靠性&lt;/li&gt;&#xA;&lt;li&gt;支持热部署：不停机更新配置文件、升级版本、更换日志文件等&lt;/li&gt;&#xA;&lt;li&gt;低内存消耗：10000个kepp-alive连接模式下的非活动连接，消耗内存仅2.5M&lt;/li&gt;&#xA;&lt;li&gt;event-driven、aio、mmap、sendfile&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;处理机制&#34;&gt;处理机制&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%a4%84%e7%90%86%e6%9c%ba%e5%88%b6&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;一个master进程带领多个worker进程进行数据处理&lt;/li&gt;&#xA;&lt;li&gt;master进程只负责将客户端请求调度到worker&lt;/li&gt;&#xA;&lt;li&gt;真正进行数据处理的是worker进程&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;apache-vs-nginx&#34;&gt;Apache VS Nginx&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#apache-vs-nginx&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nginx：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>其他配置</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%85%B6%E4%BB%96%E9%85%8D%E7%BD%AE/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E5%85%B6%E4%BB%96%E9%85%8D%E7%BD%AE/</guid>
      <description>&lt;h1 id=&#34;基础配置&#34;&gt;基础配置&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9f%ba%e7%a1%80%e9%85%8d%e7%bd%ae&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;main&#34;&gt;main&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#main&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;全局配置&lt;/li&gt;&#xA;&lt;li&gt;主配置段，即全局配置段，对http,mail都有效&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;user nginx nginx&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 启动Nginx工作进程的用户和组，（指定的是workr进程的身份，master进程始终是以root身份运行的，因为80端口只有特权用户才可以监听）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_processes  &amp;lt; number &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; auto &amp;gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 启动nginx worker进程的数量，一般和cpu核心数相同。也可以定义为auto，表示根据CPU核心数量自动匹配&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_cpu_affinity &lt;span class=&#34;m&#34;&gt;0001&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0010&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0100&lt;/span&gt; 1000&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 将worker进程绑定在某一颗cpu上，这样可以减少进程与不同cpu的反复切换，从而提升性能，0001 0010 0100 1000表示 四颗cpu;0号-3号cpu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error_log  logs/error.log&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 错误日志记录级别和路径&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pid        run/nginx.pid&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# pid文件路径&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_priority 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# worker进程优先级，-20~20(19)，数值越小优先级越高&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_rlimit_nofile 65536&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 所有worker进程能打开的文件数量上线，还包括nginx的所有连接，实际的并发连接数不能超过系统级别的最大打开文件数的限制，最好与ulimit -n的值保持一致，否则在文件描述符不足时会报 Too many open files&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;daemon off&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 前台运行nginx服务，用于测试、docker等环境&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;worker_cpu_affinity&#34;&gt;worker_cpu_affinity&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#worker_cpu_affinity&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;前期准备，假设系统中有8颗 CPU，但是 nginx 只开启了4个 worker 进程&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# lscpu | grep -E &amp;#34;^CPU\(s\)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CPU&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;s&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:              &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# grep worker_processes /apps/nginx/conf/nginx.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_processes  4&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ps aux | grep nginx&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root        &lt;span class=&#34;m&#34;&gt;1853&lt;/span&gt;  0.0  0.0  &lt;span class=&#34;m&#34;&gt;42456&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;844&lt;/span&gt; ?        Ss   12:21   0:00 nginx: master process nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx       &lt;span class=&#34;m&#34;&gt;1854&lt;/span&gt;  0.0  0.2  &lt;span class=&#34;m&#34;&gt;77112&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;5024&lt;/span&gt; ?        S    12:21   0:00 nginx: worker process&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx       &lt;span class=&#34;m&#34;&gt;1855&lt;/span&gt;  0.0  0.2  &lt;span class=&#34;m&#34;&gt;77112&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;5024&lt;/span&gt; ?        S    12:21   0:00 nginx: worker process&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx       &lt;span class=&#34;m&#34;&gt;1856&lt;/span&gt;  0.0  0.2  &lt;span class=&#34;m&#34;&gt;77112&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;5024&lt;/span&gt; ?        S    12:21   0:00 nginx: worker process&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx       &lt;span class=&#34;m&#34;&gt;1857&lt;/span&gt;  0.0  0.2  &lt;span class=&#34;m&#34;&gt;77112&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;5024&lt;/span&gt; ?        S    12:21   0:00 nginx: worker process&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;未绑定前 worker 会在不同的 CPU核心工作&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# watch -n.5 &amp;#39;ps axo pid,cmd,psr | grep nginx&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1853&lt;/span&gt; nginx: master process nginx   &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1854&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1855&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1856&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1857&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# while true ; do ab -c 1000 -n 2000 http://localhost/ ; done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# watch -n.5 &amp;#39;ps axo pid,cmd,psr | grep nginx&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1853&lt;/span&gt; nginx: master process nginx   &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1854&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1855&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1856&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;1857&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# watch -n.5 &amp;#39;ps axo pid,cmd,psr | grep nginx&amp;#39; 这个命令可以实现每0.5秒自动刷新一次，查看当前系统中所有包含“nginx”的进程的pid、cmd和psr（处理器标识符）信息。&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;具体解释如下：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  watch -n.5：这个命令用于设置一个定时器，每0.5秒刷新一次命令的输出。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ps axo pid,cmd,psr：这个命令用于列出包含所有进程的pid，进程的命令名和进程所绑定的处理器标识符。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  grep nginx：这个命令管道符号用于过滤所有包含“nginx”的进程。注意，在某些情况下您可能需要修改grep命令来滤除不需要的进程。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;综上所述，该命令对于监控和调试在Linux中运行的nginx进程非常有用。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;将 CPU 核心分别与 2、4、6、8  号CPU做亲缘性绑定&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# grep worker_cpu_affinity /apps/nginx/conf/nginx.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;worker_cpu_affinity  &lt;span class=&#34;m&#34;&gt;00000010&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;00001000&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;00100000&lt;/span&gt; 10000000&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# while true ; do ab -c 1000 -n 2000 http://localhost/ ; done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 显示1、3、5、7是正确的，因为CPU是从0开始标号 &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# watch -n.5 &amp;#39;ps axo pid,cmd,psr | grep nginx&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;8826&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;8827&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;8828&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;8829&lt;/span&gt; nginx: worker process         &lt;span class=&#34;m&#34;&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;worker_rlimit_nofile&#34;&gt;worker_rlimit_nofile&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#worker_rlimit_nofile&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;当 Nginx 处理客户端请求时，Nginx 使用文件描述符来打开与该请求相关联的文件，而这个文件可能是一个静态 HTML 文件、一个动态的 PHP 脚本或任何其他类型的文件。每个这样的文件都被分配一个文件描述符来表示与该文件的连接，当文件已经被打开时，该文件的描述符就会被放入一张描述符表中。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>优化</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BC%98%E5%8C%96/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BC%98%E5%8C%96/</guid>
      <description>&lt;h1 id=&#34;基础优化&#34;&gt;基础优化&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%9f%ba%e7%a1%80%e4%bc%98%e5%8c%96&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;以普通用户身份运行 Nginx&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;启动Nginx工作进程的用户和组，（指定的是workr进程的身份，master进程始终是以root身份运行的，因为80端口只有特权用户才可以监听）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nginx&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;worker-进程相关优化&#34;&gt;worker 进程相关优化&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#worker-%e8%bf%9b%e7%a8%8b%e7%9b%b8%e5%85%b3%e4%bc%98%e5%8c%96&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;开启和 CPU 核心数相同的 worker 进程&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;启动nginx worker进程的数量，一般和cpu核心数相同，也可以定义为auto，表示根据CPU核心数量自动匹配&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;worker_processes&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;auto&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;CPU 核心与 worker 进程进行亲缘性绑定&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将worker进程绑定在某一颗cpu上，这样可以减少进程与不同cpu的反复切换，从而提升性能，0001 0010 0100 1000表示 四颗cpu;0号-3号cpu&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;worker_cpu_affinity&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0001&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0010&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0100&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;worker 的优先级&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;可选&lt;/li&gt;&#xA;&lt;li&gt;-20优先级最高，19优先级最低，默认为0&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;所有 worker 进程能打开的文件数量&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;worker_rlimit_nofile&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;每个 worker 进程的最大连接数&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;events&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;worker_connections&lt;/span&gt;  &lt;span class=&#34;mi&#34;&gt;10240&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;每个 worker 可以同时接受多个新的网络连接&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;events&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;multi_accept&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# on时Nginx服务器的每个工作进程可以同时接受多个新的网络连接，此指令默认值为off，即默认为一个工作进程只能接受一个网络连接，建议优化，建议此值设为on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;                             &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;事件驱动模型优化&#34;&gt;事件驱动模型优化&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%ba%8b%e4%bb%b6%e9%a9%b1%e5%8a%a8%e6%a8%a1%e5%9e%8b%e4%bc%98%e5%8c%96&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;使用 epoll 的事件驱动模型（默认值）&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;events&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;epoll&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;http-响应首部优化&#34;&gt;http 响应首部优化&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#http-%e5%93%8d%e5%ba%94%e9%a6%96%e9%83%a8%e4%bc%98%e5%8c%96&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;隐藏 nginx 版本号&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>作为web服务器</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BD%9C%E4%B8%BAweb%E6%9C%8D%E5%8A%A1%E5%99%A8/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BD%9C%E4%B8%BAweb%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Nginx 作为 Web 服务器时主要负责处理 html、图片、js、css、txt 等静态资源&lt;/li&gt;&#xA;&lt;li&gt;动态资源的请求可以通过反向代理实现&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mime&#34;&gt;mime&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#mime&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;MIME（Multipurpose Internet Mail Extensions）是多用途互联网邮件扩展标准。它是一个用于描述文件内容类型的标准。MIME 用于在互联网上交换各种类型的数据，如文本、图像、音频、视频、应用程序等。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;在Web中，MIME类型通常指定在 HTTP 请求头部的 Content-Type 属性中，&lt;strong&gt;用于表明发送的数据类型，以帮助客户端或浏览器正确地处理响应数据。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;例如，如果客户端请求一个资源，服务器在响应头中指定了 MIME 类型为 text/html，则客户端浏览器会将这个资源当做 HTML 文档来处理。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;MIME类型使用单个字符串来表示，例如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;text/html、application/json、image/jpeg、audio/mp3 等&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Nginx服务器可以通过配置文件添加、修改或者删除 MIME 类型，以满足不同文件类型的需求。例如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;可以使用 Nginx 的“types”模块来映射某个文件扩展名对应的 MIME 类型；&lt;/li&gt;&#xA;&lt;li&gt;或者使用“default_type”指令设置默认的 MIME 类型。&#xA;&lt;ul&gt;&#xA;&lt;li&gt;default_type 默认值为 application/octet-stream，他的字面意思是 “八进制流二进制应用程序”，它是一种通用的二进制数据流类型，通常用于指示文件的媒体类型未知或不确定的情况下。&lt;/li&gt;&#xA;&lt;li&gt;在互联网通信中，当服务器无法确定某个文件的正确 MIME 类型时，会自动将其指定为 “application/octet-stream” 类型，这表示它是一个二进制文件类型，通常需要本地程序来识别和打开该类型的文件。&lt;/li&gt;&#xA;&lt;li&gt;例如，当您在下载某些未知格式的文件时，当服务器无法确定文件的正确 MIME 类型时，将自动将这些文件指定为 “application/octet-stream” 类型，这意味着文件将被视为二进制文件类型，并且您需要使用相应的本地程序来打开它们。&lt;/li&gt;&#xA;&lt;li&gt;需要注意的是，由于 “application/octet-stream” 类型不会告诉客户端文件的具体内容和类型，因此它在安全上存在一定的风险，例如，攻击者可以将其利用为上传病毒、恶意代码等攻击手段的载体。因此，在实际开发中，建议尽可能地明确文件的 MIME 类型，以便更好地保护系统的安全性和可靠性。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;总的来说，MIME类型是一种用于指示数据的媒体类型或格式的标准，它在互联网通信和 Web 应用中扮演着重要的角色。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types&#34;&gt;https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    include       mime.types&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 导入支持的文件类型，在编译安装中是相对于/apps/nginx/conf的目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    default_type  text/html&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 除mime.types中文件类型外，设置其他文件默认的MIME类型，访问其它类型时会提示下载不匹配的文件类型，建议修改为txt格式查看&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    types &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 指定多个MIME类型&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        text/html html&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        image/gif gif&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        image/jpeg jpg&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;范例&#34;&gt;范例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%8c%83%e4%be%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;准备测试页面&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# vim /apps/nginx/html/index.php&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;访问测试，这种情况如果使用浏览器访问将自动下载文件&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# curl http://localhost/index.php -sI | grep Content-Type&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Type: application/octet-stream&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;将无法识别后缀的文件解析为文本格式&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;http&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;default_type&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;text/html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;好啦&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# curl http://localhost/index.php -sI | grep Content-Type&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Type: text/html&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;定义-http-响应首部&#34;&gt;定义 http 响应首部&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%ae%9a%e4%b9%89-http-%e5%93%8d%e5%ba%94%e9%a6%96%e9%83%a8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;自定义-http-响应首部&#34;&gt;自定义 http 响应首部&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%87%aa%e5%ae%9a%e4%b9%89-http-%e5%93%8d%e5%ba%94%e9%a6%96%e9%83%a8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;添加头部报文信息，实现对后端服务器响应给客户端的报文中添加指定的响应首部字段&lt;/li&gt;&#xA;&lt;li&gt;由 ngx_http_headers_module 模块提供此功能&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Syntax：add_header&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;[always]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Default：&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;—&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;Context：http,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;server,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;location,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;location&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;add_header-配置范例&#34;&gt;add_header 配置范例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#add_header-%e9%85%8d%e7%bd%ae%e8%8c%83%e4%be%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 生产中通常开启，可以间接性的告诉攻击者攻击的是CDN等信息&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;add_header X-Cache &lt;span class=&#34;nv&#34;&gt;$upstream_cache_status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 是否缓存命令，常用&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;add_header X-Accel &lt;span class=&#34;nv&#34;&gt;$server_name&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 客户访问的FQDN，常用&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;add_header X-Via &lt;span class=&#34;nv&#34;&gt;$server_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 当前nginx主机的IP，不常用&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;add_header-测试范例&#34;&gt;add_header 测试范例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#add_header-%e6%b5%8b%e8%af%95%e8%8c%83%e4%be%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@centos8 ~&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# vim /apps/nginx/conf/conf.d/pc.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_pass http://10.0.0.18&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_cache nginx_proxy_cache&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_cache_key &lt;span class=&#34;nv&#34;&gt;$request_uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_cache_valid &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;302&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;301&lt;/span&gt; 10m&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_cache_valid any 5m&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        add_header X-Cache &lt;span class=&#34;nv&#34;&gt;$upstream_cache_status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#显示是否缓存命令&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#测试&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@localhost ~&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;#curl -I http://www.azheng.com/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP/1.1 &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; OK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Server: nginx/1.18.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Date: Thu, &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; Nov &lt;span class=&#34;m&#34;&gt;2021&lt;/span&gt; 12:21:06 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Type: text/html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Length: &lt;span class=&#34;m&#34;&gt;2331099&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection: keep-alive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Vary: Accept-Encoding&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Last-Modified: Thu, &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; Nov &lt;span class=&#34;m&#34;&gt;2021&lt;/span&gt; 11:42:16 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ETag: &lt;span class=&#34;s2&#34;&gt;&amp;#34;618d0198-2391db&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;X-Cache: MISS &lt;span class=&#34;c1&#34;&gt;#第一次未命中&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Accept-Ranges: bytes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;root@localhost ~&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;#curl -I http://www.azheng.com/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP/1.1 &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; OK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Server: nginx/1.18.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Date: Thu, &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; Nov &lt;span class=&#34;m&#34;&gt;2021&lt;/span&gt; 12:21:08 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Type: text/html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Length: &lt;span class=&#34;m&#34;&gt;2331099&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection: keep-alive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Vary: Accept-Encoding&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Last-Modified: Thu, &lt;span class=&#34;m&#34;&gt;11&lt;/span&gt; Nov &lt;span class=&#34;m&#34;&gt;2021&lt;/span&gt; 11:42:16 GMT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ETag: &lt;span class=&#34;s2&#34;&gt;&amp;#34;618d0198-2391db&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;X-Cache: HIT &lt;span class=&#34;c1&#34;&gt;#第二次命中&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Accept-Ranges: bytes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;需要注意的是，添加自定义首部时应该遵循一些规范和最佳实践，例如不应该使用已经被标准化的首部名称，避免潜在的安全风险以及性能影响。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>作为代理服务器</title>
      <link>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BD%9C%E4%B8%BA%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/</link>
      
      <guid>https://llinux.cn/%E5%9F%BA%E7%A1%80%E6%9C%8D%E5%8A%A1/web%E6%9C%8D%E5%8A%A1/nginx/%E4%BD%9C%E4%B8%BA%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Nginx可以通过多种方式实现反向代理，包括但不限于以下方式：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;HTTP/HTTPS反向代理：Nginx可以将客户端请求转发到后端HTTP/HTTPS服务器，实现反向代理功能。在HTTP/HTTPS反向代理中，Nginx可以代理各种HTTP请求类型，如GET、POST等。&lt;/li&gt;&#xA;&lt;li&gt;TCP/UDP反向代理：Nginx还可以代理TCP/UDP连接，例如代理SMTP、DNS等服务。&lt;/li&gt;&#xA;&lt;li&gt;IMAP4/POP3反向代理：Nginx还支持代理IMAP4和POP3邮件服务。&lt;/li&gt;&#xA;&lt;li&gt;FastCGI/UWSGI/SCGI等协议反向代理动态请求：Nginx可以通过FastCGI、UWSGI、SCGI等协议代理动态请求，例如PHP、Python等脚本语言的动态请求。这种方式比较常用于Web应用程序的反向代理。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;总之，Nginx作为一款高性能的Web服务器和反向代理服务器，支持多种协议和应用场景，可灵活应对各种需求。&lt;/p&gt;&#xA;&lt;h2 id=&#34;反向代理-和-负载均衡&#34;&gt;反向代理 和 负载均衡&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86-%e5%92%8c-%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;反向代理和负载均衡是两个不同的概念，虽然它们有时候在实践中会结合使用。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;反向代理是一种代理服务器，它接收客户端请求并将请求转发给后端服务器，同时将后端服务器的响应返回给客户端，从而实现隐藏后端服务器的IP地址和提供更好的安全性等功能。&lt;/li&gt;&#xA;&lt;li&gt;负载均衡是一种分布式系统中的策略，它通过将负载分散到多个计算机节点上，以提高系统的性能、可扩展性和可用性。负载均衡可以实现在多台服务器之间分发请求，以达到平衡服务器负载的目的。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;在实践中，我们通常会将反向代理和负载均衡结合使用，将客户端请求转发到多个后端服务器上，从而实现高性能和高可用性的Web应用程序。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;反向代理和负载均衡的区别&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;反向代理和负载均衡是两个不同的概念，虽然它们在实践中有时候会结合使用。它们的主要区别如下：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;功能不同：反向代理是一种代理服务器，它接收客户端请求并将请求转发给后端服务器，同时将后端服务器的响应返回给客户端，从而实现隐藏后端服务器的IP地址和提供更好的安全性等功能。而负载均衡是一种分布式系统中的策略，它通过将负载分散到多个计算机节点上，以提高系统的性能、可扩展性和可用性。&lt;/li&gt;&#xA;&lt;li&gt;目的不同：反向代理的主要目的是提高Web应用程序的安全性和性能，通过隐藏后端服务器的IP地址和实现静态资源的缓存等功能，减轻后端服务器的负载，从而提高应用程序的可用性和可靠性。而负载均衡的主要目的是实现服务器集群的负载平衡，将客户端请求分配到多个后端服务器上，从而平衡服务器的负载，提高整个系统的性能和可用性。&lt;/li&gt;&#xA;&lt;li&gt;实现方式不同：反向代理是通过在代理服务器和后端服务器之间建立连接，并在代理服务器上配置反向代理规则，来实现客户端请求的转发和响应的返回。而负载均衡是通过在负载均衡器上配置负载均衡策略，并在负载均衡器和后端服务器之间建立连接，来实现客户端请求的分发和后端服务器的负载平衡。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;虽然反向代理和负载均衡是两个不同的概念，但在实践中通常会结合使用，以实现高性能和高可用性的Web应用程序。&lt;/p&gt;&#xA;&lt;h2 id=&#34;同构代理-和-异构代理&#34;&gt;同构代理 和 异构代理&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%90%8c%e6%9e%84%e4%bb%a3%e7%90%86-%e5%92%8c-%e5%bc%82%e6%9e%84%e4%bb%a3%e7%90%86&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;同构代理指的是代理服务器和后端服务器使用相同的协议通信&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;比如Nginx作为代理服务器，反向代理到Apache或Tomcat服务器，它们都使用HTTP协议进行通信。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;异构代理则指代理服务器和后端服务器使用不同的协议通信&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;比如Nginx作为代理服务器，反向代理到MySQL或Redis服务器，MySQL或Redis使用TCP协议进行通信，而Nginx使用HTTP协议进行通信。&lt;/li&gt;&#xA;&lt;li&gt;需要注意的是，虽然代理服务器和后端服务器的协议不同，但代理服务器可以使用一些转换协议的技术来进行通信，比如使用FastCGI、uWSGI、SCGI等协议将请求转发到后端服务器。这样可以在代理服务器和后端服务器之间进行协议转换，从而实现异构代理的功能。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;nginx-代理相关模块说明&#34;&gt;Nginx 代理相关模块说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nginx-%e4%bb%a3%e7%90%86%e7%9b%b8%e5%85%b3%e6%a8%a1%e5%9d%97%e8%af%b4%e6%98%8e&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;ngx_http_upstream_module&#34;&gt;ngx_http_upstream_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_http_upstream_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用于定义为proxy_pass、fastcgi_pass、uwsgi_pass等指令引用的后端服务器分组&lt;/li&gt;&#xA;&lt;li&gt;这个模块允许 Nginx 与上游服务器进行通信，以便在 Nginx 与客户端之间进行负载均衡和高可用性方案。该模块可以配置多种负载均衡算法，如轮询、IP哈希、最少连接数等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_upstream_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_upstream_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ngx_http_proxy_module&#34;&gt;ngx_http_proxy_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_http_proxy_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将客户端的请求以http协议转发至指定服务器进行处理，缓存实现&lt;/li&gt;&#xA;&lt;li&gt;该模块提供了将请求代理转发到另一个服务器的功能，通常用于反向代理和缓存。可以配置请求头、响应头和缓存设置等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_proxy_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_proxy_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ngx_stream_proxy_module&#34;&gt;ngx_stream_proxy_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_stream_proxy_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将客户端的请求以tcp协议转发至指定服务器处理&lt;/li&gt;&#xA;&lt;li&gt;该模块提供了将TCP或UDP数据流代理转发到另一个服务器的功能，常用于代理转发数据库、消息队列等应用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html&#34;&gt;https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ngx_http_fastcgi_module&#34;&gt;ngx_http_fastcgi_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_http_fastcgi_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将客户端对php的请求以fastcgi协议转发至指定服务器处理&lt;/li&gt;&#xA;&lt;li&gt;这个模块允许 Nginx 与 FastCGI 应用程序进行通信，通常用于运行 PHP 等脚本语言。可以配置请求参数、响应参数等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ngx_http_uwsgi_module&#34;&gt;ngx_http_uwsgi_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_http_uwsgi_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;将客户端对python的请求以uwsgi协议转发至指定服务器处理&lt;/li&gt;&#xA;&lt;li&gt;该模块允许 Nginx 与 uWSGI 应用程序进行通信，通常用于 Python 等脚本语言。可以配置请求参数、响应参数等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_uwsgi_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ngx_http_headers_module&#34;&gt;ngx_http_headers_module&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#ngx_http_headers_module&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;添加头部报文信息，实现对后端服务器响应给客户端的报文中添加指定的响应首部字段&lt;/li&gt;&#xA;&lt;li&gt;该模块提供了添加、修改、删除请求和响应头的功能。可以用于设置缓存控制、安全标头等。&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_headers_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_headers_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;http_proxy-模块常用参数说明&#34;&gt;http_proxy 模块常用参数说明&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#http_proxy-%e6%a8%a1%e5%9d%97%e5%b8%b8%e7%94%a8%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_proxy_module.html&#34;&gt;https://nginx.org/en/docs/http/ngx_http_proxy_module.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;nginx默认会隐藏后端服务器的server、Date、X-Pad、X-Accel-&amp;hellip; 等字段传递给客户端&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;proxy_pass&#34;&gt;proxy_pass&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#proxy_pass&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;设置将客户端请求转发给的后端服务器主机&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Syntax:&lt;/span&gt;&#x9;&lt;span class=&#34;s&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Default:&lt;/span&gt;&#x9;&lt;span class=&#34;s&#34;&gt;—&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;Context:&lt;/span&gt;&#x9;&lt;span class=&#34;s&#34;&gt;location,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;location,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;limit_except&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;URL 可以是：&lt;/li&gt;&#xA;&lt;li&gt;主机名(将转发至后端服务器作为主机头首部)&lt;/li&gt;&#xA;&lt;li&gt;IP地址:端口&lt;/li&gt;&#xA;&lt;li&gt;预先设置的转发主机群组，需要 ngx_stream_proxy_module 模块支持&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;范例&#34;&gt;范例&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e8%8c%83%e4%be%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;有--符号-和-无--符号的区别&#34;&gt;有 / 符号 和 无 / 符号的区别&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%9c%89--%e7%ac%a6%e5%8f%b7-%e5%92%8c-%e6%97%a0--%e7%ac%a6%e5%8f%b7%e7%9a%84%e5%8c%ba%e5%88%ab&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;无 / ，类似root&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/web&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://10.0.0.18:8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#8080后无 /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 表示location后面的url附加到8080后&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 最终访问的是后端服务器的：http://10.0.0.18:8080/web/index.html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 后端服务器需要有web目录才能访问，否则将将报404未找到&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#访问结果简述：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://HOSTNAME/web/&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://10.0.0.18:8080/web/index.html&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;有 / ，类似alias&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/web&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://10.0.0.18:8080/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#8080后有 /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 表示访问代理服务器的 /web 相当于直接访问： http://10.0.0.18:8080/index.html    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 访问结果简述：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://HOSTNAME/web/&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://10.0.0.18:8080&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h4 id=&#34;其他注意事项&#34;&gt;其他注意事项&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%85%b6%e4%bb%96%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;如果 location 定义其 uri 时使用了正则表达式模式（包括~、&lt;del&gt;*，但不包括^&lt;/del&gt;），则 proxy_pass 之后必须不能使用 uri，用户请求时传递的 uri 将直接附加至后端服务器之后&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;|~*&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/uri&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;index.html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://host:port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# proxy_pass后面的url不能加/，否则会报语法错误&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;...&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 访问结果简述：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;#&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://HOSTNAME/uri/&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;--&amp;gt;&lt;/span&gt;  &lt;span class=&#34;s&#34;&gt;http://host:port/uri&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;是的，如果在 &lt;code&gt;location&lt;/code&gt; 块中使用正则表达式模式（包括 &lt;code&gt;~&lt;/code&gt;、&lt;code&gt;~*&lt;/code&gt;），那么在使用 &lt;code&gt;proxy_pass&lt;/code&gt; 指令时，应该避免在 URI 中指定具体的值，否则 Nginx 将会把请求传递到一个错误的后端服务器或者返回 404 错误。&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
