• nginx反向代理


    一:

    1.反向代理

      反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。  

    二:配置

    1.代理服务器的基本配置

      通过不同协议将NGINX请求传递给代理的服务器,

      修改发送到代理服务器的客户端请求标头,

      以及配置来自代理服务器的响应缓冲

    2.将请求传递给代理的服务器

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

      要将请求传递给HTTP代理服务器,则在一个location块内指定proxy_pass指令。

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

      代理服务器的地址后面是URI为 /link/。 如果URI与地址一起指定,它将替换与location参数匹配请求URI的部分。 例如,这里使用/some/path/page.html的URI请求将被代理到http://www.example.com/link/page.html

      该地址可以指定为域名或IP地址。 该地址还可能包括一个端口:

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

    3.传递请求标头

      默认情况下,NGINX在代理请求“Host” 和 “Connection”中重新定义了两个头字段,并消除了其值为空字符串的头字段。

      “Host”设置为$proxy_host变量,“Connection”设置为关闭(close)。

      要更改这些设置,以及修改其他header字段,请使用proxy_set_header指令

      location /some/path/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          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;
      }

      缓存被禁用。

      则在从代理服务器接收缓冲时,响应将同步发送到客户端。 对于需要尽快开始接收响应的快速交互式客户端,此行为可能是可取的。

      要禁用特定位置的缓冲,请在location块中将proxy_buffering伪指令设置为off

      location /some/path/ {
          proxy_buffering off;
          proxy_pass http://localhost:8000;
      }

    5.选择传出IP地址

      如果您的代理服务器有多个网络接口,有时您可能需要选择特定的源IP地址才能连接到代理服务器或上游。

      如果NGINX后端的代理服务器只配置为接受来自特定IP网络或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/;
      }
      
  • 相关阅读:
    JavaEE Tutorials (25)
    洛谷 P2677 超级书架 2
    洛谷 P1029 最大公约数和最小公倍数问题
    洛谷 P1305 新二叉树
    洛谷 P3817 小A的糖果
    洛谷 P1618 三连击(升级版)
    洛谷 P2097 资料分发1
    洛谷 P1068 分数线划定
    洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
    洛谷 P1223 排队接水
  • 原文地址:https://www.cnblogs.com/juncaoit/p/7474503.html
Copyright © 2020-2023  润新知