💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
[TOC] # 配置 ~~~ include mime.types; #文件名与文件扩展名映射表 default_type application/octet-stream; #默认文件类型,默认为text/plain #access_log off; #取消服务日志 log_format myFormat ' $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式 access_log log/access.log myFormat; #combined为日志格式的默认值 sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于的值,默认为0,即不设上限 keepalive_timeout 65; #连接超时时间,默认为75sf,可以在http块,server块,location块。 proxy_connect_timeout 1; #nginx与被代理服务器建立连接的超时时间,默认60秒 proxy_read_timeout 1; #nginx服务器向被代理服务器发出read请求后,等待响应的超时时间,默认为60秒 proxy_send_timeout 1; #nginx服务器向被代理服务器发出write请求后,等待响应的超时时间,默认为60秒 proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否中断被代理服务器的请求,默认为off proxy_method get; #接受客户端的请求方法post/get proxy_http_version 1.0 ; #Nginx服务器提供代理服务器的http协议版本为1.0,1.1,默认设置为1.0 proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否中断被代理服务器的请求,默认为off proxy_ignore_headers "Expires" "Set-Cookie"; #nginx服务器不处理设置的http响应头中的头域,空格隔开可以设置多个 proxy_intercept_errors on; #如果被代理服务器返回的状态码为4xx,设置的error_page会生效,默认为off proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默认为512个字符 proxy_headers_hash_bucket_size 128; #nginx服务器申请存放http报文头的哈希表容量大小。默认为64个字符 proxy_next_upstream timeout; #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值 error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off ~~~ # 错误页 设置错误页 ~~~ error_page 404 https://www.baidu.com; #错误页 ~~~ <br> 这个配置并没有起作用,需要配合以下配置使用 ~~~ #如果被代理服务器返回的状态码为4xx,设置的error_page会生效,默认为off proxy_intercept_errors on; ~~~ <br> 如果我们的代理只允许接受get,post请求方法的一种 ~~~ proxy_method get; #接受客户端的请求方法post/get ~~~ <br> 设置支持的http协议版本 ~~~ proxy_http_version 1.0 ; #Nginx服务器提供代理服务器的http协议版本为1.0,1.1,默认设置为1.0 ~~~ <br> <br> # 负载均衡 如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台web服务器iis关闭,也就是web不能访问,那么nginx服务器分发请求还是会给这台不能访问的服务器,如果这里的响应连接时间过长,会导致客户端页面一直等待响应。 ![](https://box.kancloud.cn/f9e85fc2fb4ed92ecfe3307fbd513066_909x339.png) <br> 如果负载均衡中web2发生这样的情况,nginx首先回去web1请求,但nginx在配置不当的情况下回继续分发请求到web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。 <br> 以下配置是解决方案之一 ~~~ proxy_connect_timeout 1; #nginx与被代理服务器建立连接的超时时间,默认60秒 proxy_read_timeout 1; #nginx服务器向被代理服务器发出read请求后,等待响应的超时时间,默认为60秒 proxy_send_timeout 1; #nginx服务器向被代理服务器发出write请求后,等待响应的超时时间,默认为60秒 proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否中断被代理服务器的请求,默认为off ~~~ <br> 如果使用upstream指令配置了一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交给下一组服务器处理。 ~~~ proxy_next_upstream timeout; #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值 error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off ~~~ * error:建立连接或者向被代理的服务器发送请求或读取响应信息时服务器发生错误 * timeout:建立连接,向被代理服务器发送请求或读取响应信息时服务器发生超时 * invalid_header:被代理服务器返回的响应头异常 * off:无法将请求分发给被代理服务器 * http_400, ...:被代理服务器返回的状态码为400,500,502等 <br>