k8s 上的 Nginx Ingress 控制器 - 存储中的临时文件位置?
Nginx Ingress controller on k8s - temporary files location in storage?
NGINX 入口控制器将临时文件存储在哪里?
这是我收到的消息,我很确定它将文件存储在与我的 pods:
之一相连的卷上
2021/09/27 20:33:23 [warn] 33#33: *26 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000002, client: 10.42.1.0, server: _, request: "POST /api/adm/os/image HTTP/1.1", host: "vzredfish.cic.shidevops.com", referrer: "https://vzredfish.cic.shidevops.com/setting"
但是当我进入位置/var/cache/nginx/client_temp
时什么也没有。
我也检查了入口控制器 pods,那里也有另一个。
我想知道如何解决我们遇到的问题。我正在尝试将文件直接上传到 pod 内存,但它会先将文件上传到临时位置。
感谢您的帮助。
达尼洛
间接回答你的问题似乎有一些方法可以跳过代理缓冲来实现将文件直接上传到 pod 内存的目标,我发现了一篇有趣的文章 here,看看禁用代理缓冲 部分。
感谢 Jakub Siemaszko 的指点,这是部分解决方案。
我们的应用程序部署在 k8s 集群中,我们在 pods 之一中有一个 nginx 控制器和一个 nginx 实例。
我遇到的问题与 pod 中的 nginx 有关,而不是控制器(我正在更改控制器中的指令和键)
在 pod 内的 nginx 中,我必须更改 nginx.conf 并将以下内容添加到 HTTP 和位置
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
client_max_body_size 25000M;
proxy_buffering off;
proxy_ignore_client_abort on;
proxy_read_timeout 3600;
proxy_http_version 1.1;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
sendfile off;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
location /api {
return 302 /api/;
}
location /api/ {
proxy_pass http://backend:3000/;
}
location /downloads {
autoindex on;
}
location / {
try_files $uri $uri/ /index.html;
proxy_read_timeout 3600;
proxy_http_version 1.1;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
}
}
include /etc/nginx/conf.d/*.conf;
}
这修复了 504 错误(我仍然看到 499,但它能够完成大文件的上传)。
至于临时文件的位置,这仍然是个谜,但我们不需要再监视它了
NGINX 入口控制器将临时文件存储在哪里?
这是我收到的消息,我很确定它将文件存储在与我的 pods:
之一相连的卷上2021/09/27 20:33:23 [warn] 33#33: *26 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000002, client: 10.42.1.0, server: _, request: "POST /api/adm/os/image HTTP/1.1", host: "vzredfish.cic.shidevops.com", referrer: "https://vzredfish.cic.shidevops.com/setting"
但是当我进入位置/var/cache/nginx/client_temp
时什么也没有。
我也检查了入口控制器 pods,那里也有另一个。
我想知道如何解决我们遇到的问题。我正在尝试将文件直接上传到 pod 内存,但它会先将文件上传到临时位置。
感谢您的帮助。
达尼洛
间接回答你的问题似乎有一些方法可以跳过代理缓冲来实现将文件直接上传到 pod 内存的目标,我发现了一篇有趣的文章 here,看看禁用代理缓冲 部分。
感谢 Jakub Siemaszko 的指点,这是部分解决方案。
我们的应用程序部署在 k8s 集群中,我们在 pods 之一中有一个 nginx 控制器和一个 nginx 实例。 我遇到的问题与 pod 中的 nginx 有关,而不是控制器(我正在更改控制器中的指令和键)
在 pod 内的 nginx 中,我必须更改 nginx.conf 并将以下内容添加到 HTTP 和位置
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
client_max_body_size 25000M;
proxy_buffering off;
proxy_ignore_client_abort on;
proxy_read_timeout 3600;
proxy_http_version 1.1;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
sendfile off;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
location /api {
return 302 /api/;
}
location /api/ {
proxy_pass http://backend:3000/;
}
location /downloads {
autoindex on;
}
location / {
try_files $uri $uri/ /index.html;
proxy_read_timeout 3600;
proxy_http_version 1.1;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
}
}
include /etc/nginx/conf.d/*.conf;
}
这修复了 504 错误(我仍然看到 499,但它能够完成大文件的上传)。
至于临时文件的位置,这仍然是个谜,但我们不需要再监视它了