Code前端首页关于Code前端联系我们

Nginx 教程:基本反向代理服务器配置

terry 2年前 (2023-09-28) 阅读数 57 #未命名

基本代理服务器配置。您将学习如何通过各种协议传递 NGINX 代理请求、修改发送到代理服务器的客户端请求标头以及配置代理服务器响应的缓存。

代理服务器的基本配置目录

  • 代理服务器的表现
  • Submit请求到代理服务器to oferxy Server tosent request request headers
  • configure cache touts cache
    • 输出IP地址
    • 选择IP地址服务器

      代理通常用于在多个服务器之间分配负载,无缝显示来自不同网站的内容,或通过 HTTP 以外的协议将请求传递到应用程序服务器。

      2。向代理服务器发送请求

      当 NGINX 向代理服务器发送请求时,它会将请求发送到指定的代理服务器,接收响应并将其发送回客户端。请求可以使用指定的协议发送到 HTTP 服务器(另一个 NGINX 服务器或任何其他服务器)或非 HTTP 服务器(可以运行使用特定框架(如 PHP 或 Python)开发的应用程序)。支持的协议包括 FastCGI、uwsgi、SCGI 和 memcached。

      如果您想要向 HTTP 代理服务器发送请求,请在位置块中输入 proxy_pass 命令。例如:

      location /some/path/ {
          proxy_pass http://www.example.com/link/;
      }
      

      此示例配置会将在此 位置 处理的所有请求转发到指定地址 (http://www.example.com/link/) 的代理服务器)。地址可以指定为域名或IP 地址。该地址还可以包含端口:

      location ~ \.php {
          proxy_pass http://127.0.0.1:8000;
      }
      

      请注意,在上面的第一个示例中,代理服务器地址后跟 URI /link/。如果 URI 与地址一起指定,它将替换请求 URI 中与 location 参数匹配的部分。例如,使用 /some/path/page.html 的 URI 请求将被代理链接到 http://www.example.com/link/page.html。如果指定的地址没有 URI,或者无法确定要替换 URI 的哪一部分,则发送完整的请求 URI(如有必要,请进行修改)。

      要将请求发送到非 HTTP 代理,应使用适当的指令 **_ pass

      • fastcgi_pass 将请求发送到 Fast CGI 服务器 UWSGI_Pass 将请求传递到 UWSGI 服务器
      • scgi_pass 将请求传递到 SCGI 服务器
      • Memcached_pa​​ss 将请求传递到 MemCached 服务器

      请注意,指定地址的规则可能是这些情况有所不同。您可能还需要向服务器传递其他参数(有关详细信息,请参阅参考文档)。

      proxy_pass指令还可以指向一组命名的服务器。在这种情况下,请求将根据指定的方法在组中的服务器之间分发。

      3。传递请求头

      默认情况下,NGINX 重新定义并消除了代理请求中两个头字段 “Host”“Connection”,其头值为空。。 “主机”设置为变量 $proxy_host“连接” 设置为关闭 (close♿)。

      如果您想要更改这些设置,并修改其他字段 header,请使用命令 proxy_set_header。该指令可以在一处或多处指定(place)。它还可以在特定上下文 服务器 http 块中指定。例如:

      location /some/path/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_pass http://localhost:8000;
      }
      

      在此配置中,字段 “访客” 设置为变量 $host。
      为了防止代理头字段被传递,请将其设置为空字符串,如下所示:

      location /some/path/ {
          proxy_set_header Accept-Encoding "";
          proxy_pass http://localhost:8000;
      }
      

      4。缓存配置

      默认情况下,NGINX 缓存来自代理服务器的响应。响应存储在内部缓冲区中,并且在收到整个响应之前不会发送到客户端。缓存有助于优化慢速客户端的性能,如果响应从 NGINX 同步传递到客户端,这可能会浪费代理服务器时间。然而,当启用缓存时,NGINX 允许代理服务器快速处理响应,而 NGINX 会在客户端需要下载响应时存储响应。

      负责启用和禁用缓冲的指令是 proxy_buffering。默认情况下,它处于打开状态并启用缓存。

      proxy_buffers 指令控制分配给请求的缓冲区的大小和数量。来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由 proxy_buffer_size 指令设置。该部分通常包含较小的响应标头,并且可能小于响应缓冲区的其余部分。

      在以下示例中,默认缓冲区数量增加,并且响应第一部分的缓冲区大小小于默认值。

      location /some/path/ {
          proxy_buffers 16 4k;
          proxy_buffer_size 2k;
          proxy_pass http://localhost:8000;
      }
      
      Shell

      如果禁用缓存,则从代理服务器收到缓存后,将响应同步发送到客户端。对于需要尽快开始接收响应的快速交互客户端来说,这种行为可能是理想的。

      要禁用特定位置的缓冲,请将proxy_buffering指令设置为off在❙❀块中,如下所示: 在本例中,仅限NGINX用途配置为 proxy_buffer_size 的缓冲区用于存储响应的当前部分。

      5。传出 IP 地址选择

      如果您的代理服务器有多个网络接口,有时您可能需要选择特定的源 IP 地址来连接到代理服务器或上游。如果 NGINX 后端的代理服务器配置为仅接受来自特定 IP 网络或 IP 地址范围的连接,则此配置选项非常有用。

      指示 proxy_bind 指令和所需网络接口的 IP 地址:

      location /app1/ {
          proxy_bind 127.0.0.1;
          proxy_pass http://example.com/app1/;
      }
      
      location /app2/ {
          proxy_bind 127.0.0.2;
          proxy_pass http://example.com/app2/;
      }
      

      还可以使用变量输入 IP 地址。例如,变量 $server_addr 传递接收请求的网络接口的 IP 地址:

      location /app3/ {
          proxy_bind $server_addr;
          proxy_pass http://example.com/app3/;
      }
      

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门