Назад | Перейти на главную страницу

Как настроить client_max_body_size для каждого местоположения с помощью контроллера nginx

Мне нужно будет настроить client_max_body_size для определенного места в моем Ingress файл конфигурации является значением по умолчанию. Как это можно сделать? Я просматривал документ, но ничего не нашел. Не хочешь делать это глобально.

Кроме того, если бы я использовал аннотацию, она использовалась бы для всех путей, я просто хочу ее для определенного.

  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "4m"
location /upload-path {
  client_max_body_size 6M;
}

Согласно Документы Nginx, вы можете установить client_max_body_size в 3-х секциях:

  • http,
  • сервер
  • расположение

Установите это значение, вы должны изменить его в nginx ingress controller капсула, точно в /etc/nginx/nginx.conf.

Ниже пример:

$ kubectl exec -ti <ingres-controller-pod> /bin/bash

$ kubectl exec -ti nginx-ingress-controller-6b85b64f49-rwxlf /bin/bash

Отредактируйте файл nginx.conf.

$ vi /etc/nginx/nginx.conf

В моем примере имя хоста из входящего трафика my.pod.svc.

Теперь вам нужно найти правильный server часть файла. Вы можете искать его, так как он будет прокомментирован, как показано ниже.

## start server <your host name from ingress>

Как показано ниже:

 ## start server my.pod.svc                    
        server {                                                   
                server_name my.pod.svc ;   
...

Теперь вы должны найти подходящее место. В этом примере это будет /pod.

 location ~* "^/pod" {                                                                                                          

                        set $namespace      "default"; 

Здесь вы должны указать это значение.

По умолчанию это 2M. Во время изменения не забывайте о ;.

Аналогичная ветка есть на Переполнение стека. В этой ветке вы также можете найти ссылку с другим примером Вот.

После этого изменения вам нужно будет перезагрузить nginx.

РЕДАКТИРОВАТЬ:

Другой вариант (который использовался OP в этой ситуации) - использовать annotation.

client_body_max_size

nginx.ingress.kubernetes.io/proxy-body-size: 8m

Таким образом будет применен весь кластер.

другая аннотация, которую можно использовать, это аннотация_configuration_snippet. В этом примере установите размер только на /upload-path, это будет выглядеть так:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
   name: nginx-snippet
   annotations:
      nginx.ingress.kubernetes.io/configuration-snippet: |

      location /upload-path {

           client_max_body_size 8M;  
      }