实验图示
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
配置解释
proxy_pass:
是Nginx的指令,用于指定请求应该转发到的上游服务器。
http://192.168.88.163:88; 这是上游服务器的地址和端口。这意味着当Nginx收到一个请求时,它会将这个请求转发到 IP 地址为 192.168.88.163,端口为 80 的服务器上。
简而言之,这个配置告诉 Nginx:当收到一个请求时,不要直接处理它,而是将它转发到 192.168.88.163 上的 80 端口上。这通常用于将外部流量转发到内部服务或应用上。
proxy_redirect;
用于修改被代理服务器返回的响应头中的Location和Refresh字段。这个指令的作用是确保当代理服务器返回一个重定向响应时,重定向的URL对外部客户端是有效和可访问的。
proxy_redirect default;:使用默认规则来处理重定向,即替换重定向URL中的主机名和端口,使其与当前服务器的主机名和端口匹配。
proxy_redirect off;:关闭重定向处理,即不修改重定向URL。
此外,proxy_redirect 指令还支持一些变量和复杂的匹配规则,可以根据需要进行配置。
proxy_set_header Host $http_host;
用于设置转发请求的头部信息。用于保持请求的原始头部信息。
解释如下:
proxy_set_header:用于设置转发请求的头部信息。
Host: 这是要设置的头部字段的名称,即 "Host"。
$http_host: 这是一个变量,表示请求的原始主机名和端口号。它通常包含域名和可能的端口号,例如 "example.com:80"。
这个指令的作用是将请求的主机头设置为原始请求的主机头。在反向代理的情况下,这意味着 Nginx 会将请求转发到后端服务器,并将原始的主机头信息包含在转发请求中。
这样做的原因是,当请求通过反向代理时,原始的主机头信息可能会丢失或被修改。通过使用 proxy_set_header Host $http_host; 指令,可以确保后端服务器接收到正确的原始主机头信息,以便正确处理请求。
proxy_set_header X-Real-IP $remote_addr;
用于设置转发请求的头部信息。用于传递客户端的真实 IP 地址给后端服务器。
解释如下:
proxy_set_header: 这是 Nginx 的一个指令,用于设置转发请求的头部信息。
X-Real-IP: 这是要设置的头部字段的名称,通常用于表示客户端的真实 IP 地址。
$remote_addr: 这是一个变量,表示客户端的 IP 地址。当 Nginx 作为反向代理时,它将使用这个变量来设置 X-Real-IP 头部字段,以便将客户端的真实 IP 地址传递给后端服务器。
这个指令的作用是将客户端的真实 IP 地址包含在请求的头部中,以便后端服务器可以识别客户端的真实 IP 地址。这在处理来自反向代理的请求时非常有用,因为客户端的真实 IP 地址可能不会直接暴露给后端服务器。通过使用 proxy_set_header X-Real-IP $remote_addr; 指令,可以确保后端服务器接收到正确的客户端 IP 地址,以便正确处理请求和日志记录等操作。
proxy_connect_timeout;
用于设置代理服务器与后端服务器建立连接的超时时间。
具体来说,当客户端向 Nginx 发起请求时,Nginx 会尝试与后端服务器建立连接。如果在proxy_connect_timeout 指定的时间内无法建立连接,Nginx 将返回一个错误给客户端。这个指令的单位是秒,默认值通常为 60 秒。
通过调整 proxy_connect_timeout 的值,可以控制 Nginx 与后端服务器建立连接的超时时间,以适应不同的网络环境和后端服务器的性能。如果设置为较小的值,将缩短超时时间,可能导致连接失败;如果设置为较大的值,将延长超时时间,可能导致请求延迟。因此,需要根据实际情况进行合理的配置。
proxy_send_timeout;
用于设置向后端/上游服务器发送请求的超时时间。
当 Nginx 与后端/上游服务器建立连接后,它会将请求发送给后端/上游服务器。如果在 proxy_send_timeout 指定的时间内,Nginx 无法成功发送整个请求,那么它将关闭与后端/上游服务器的连接,并返回一个错误给客户端。这个指令的单位是秒,默认值通常为 60 秒。
通过调整 proxy_send_timeout 的值,可以控制 Nginx 向后端/上游服务器发送请求的超时时间,以适应不同的网络环境和请求大小。如果设置为较小的值,将缩短超时时间,可能导致请求发送失败;如果设置为较大的值,将延长超时时间,可能导致请求发送延迟。因此,需要根据实际情况进行合理的配置。
proxy_read_timeout;
用于设置向后端/上游服务器读取响应的超时时间。
具体来说,当 Nginx 向后端/上游服务器发送请求后,它会等待后端/上游服务器返回响应。如果在 proxy_read_timeout 指定的时间内,Nginx 无法从后端/上游服务器读取到完整的响应,那么它将关闭与后端/上游服务器的连接,并返回一个错误给客户端。这个指令的单位是秒,默认值通常为 60 秒。
proxy_buffering on;
用于开启从后端被代理服务器响应内容的缓冲。
如果 proxy_buffering 开启,Nginx 会假定被代理的后端服务器会以最快速度响应,并把内容保存在由指令 proxy_buffer_size 和 proxy_buffers 指定的缓冲区里边。如果响应内容无法放在内存里边,那么部分内容会被写到磁盘上。如果 proxy_buffering 被关闭了,那么响应内容会按照获取内容的多少立刻同步传送到客户端。
proxy_buffer_size 32k;
用于设置代理服务器保存用户响应头信息的缓冲区大小。
将 proxy_buffer_size 设置为 32k,意味着代理服务器将使用 32k 大小的缓冲区来保存用户响应头信息。这个缓冲区的大小可以根据实际需求进行调整,以适应不同大小的头信息。
proxy_buffers 4 128k;
用于设置代理服务器(Nginx)保存用户响应体的缓冲区数量和大小。
proxy_buffers 设置为 4 128k,意味着代理服务器将使用 4 个大小为 128k 的缓冲区来保存用户响应体。这些缓冲区用于存储从后端服务器获取的响应数据,以便在客户端请求时进行读取和传输。
roxy_busy_buffers_size 256k;
用于设置代理服务器在处理高并发请求时,忙缓冲区的大小。
当代理服务器同时处理大量请求时,这个指令可以帮助控制忙缓冲区的内存使用量,以防止内存溢出或性能问题。如果代理服务器正在处理大量请求并且缓冲区已满,那么新请求将会被拒绝或等待,直到有足够的空间可用。
将 proxy_busy_buffers_size 设置为 256k,意味着代理服务器在处理高并发请求时,每个缓冲区的大小将被限制为 256k。这个值可以根据实际负载和性能需求进行调整,以确保代理服务器在高并发情况下仍然能够有效地处理请求。
proxy_max_temp_file_size 256k;
用于设置代理服务器在缓冲响应数据时,临时文件的最大大小。
当 Nginx 代理服务器从后端服务器接收响应数据时,如果响应数据的大小超过了 proxy_buffer_size 和 proxy_buffers 指定的缓冲区大小,Nginx 会将超出部分的数据写入临时文件中。proxy_max_temp_file_size 指令用于限制这些临时文件的最大大小。
将 proxy_max_temp_file_size 设置为 256k,意味着每个临时文件的最大大小将被限制为 256k。如果响应数据的大小超过了缓冲区大小和临时文件的最大大小,Nginx 将会报错并返回错误给客户端。