NGINX 反向代理服务器在 5 分钟不活动后向上游发送 RST,向下游发送 FIN

NGINX 反向代理服务器在 5 分钟不活动后向上游发送 RST,向下游发送 FIN

我当前的 nginx 设置总是在 5 分钟不活动(即没有交易)后终止 TCP 连接。

我有此设置,需要从我的内部网络 [客户端应用程序] 连接到公共网络 [服务器] 的 TLS1.2 连接。它仅使用 TCP 端口(不是 http/https)并与位于公共网络的服务器建立连接。客户端应用程序不支持 TLS1.2 连接,因此引入了 nginx 代理/反向代理以实现 TLS 包装目的。您可以参考以下内容:

              Internal Network                 | INTERNET/Public

[客户端应用程序] <-----> [NGINX 反向代理] <--- | ---> [公共服务器]

           <Non TLS TCP Traffic>            <TLS 1.2>
  • 使用流模块
  • nginx 错误日志中没有显示任何错误
  • 访问日志显示 TCP 200 状态,但会话每次仅持续 300 秒。[记录在 access_log 中]访问日志

以下是我的 nginx 配置

stream {
resolver 127.0.0.1;
include /etc/nginx/conf.d/*.conf;
log_format basic '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time $upstream_addr'
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/stream.access.log basic;
error_log log_file;
error_log  /var/log/nginx/error_log;
server {
         listen 35012;
         proxy_pass X.X.X.X:35012;
         proxy_timeout 86400s;
         proxy_connect_timeout 1200s;
         proxy_socket_keepalive on;
         ssl_session_cache shared:SSL:5m;
         ssl_session_timeout 30m;
    proxy_ssl  on;
    proxy_ssl_certificate         /etc/ssl/certs/backend.crt;
    proxy_ssl_certificate_key     /etc/ssl/certs/backend.key;
    proxy_ssl_protocols           TLSv1.2;
    proxy_ssl_ciphers             HIGH:!aNULL:!MD5;
    proxy_ssl_verify_depth  2;
    proxy_ssl_session_reuse on;
}

捕获 tcp 数据包并通过 wireshark 检查后,我发现 nginx 正在向公共服务器发送 RST,然后发送 FIN/ACK(参考附加的 pcap 图片)wireshark_pcap

我尝试按照上面的 nginx 配置启用 keepalive 相关参数,并检查操作系统的 TCP 可调参数,但我找不到任何导致 NGINX 终止 TCP 连接的相关设置。

有人遇到同样的问题吗?

相关内容