Quero configurar o Controlador de entrada NGINX para aumentar o tamanho do corpo da solicitação do cliente com meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS). Também quero ativar o Compartilhamento de recursos de origem cruzada (CORS) para permitir cabeçalhos adicionais e usar o WebSocket com o Controlador de entrada NGINX.
Breve descrição
Escolha uma das seguintes opções de configuração:
- Para aumentar o tamanho do corpo da solicitação do cliente, conclua as etapas na seção Configurar tamanho máximo do corpo.
- Para ativar o CORS para permitir cabeçalhos adicionais, conclua as etapas na seção Ativar CORS.
- Para usar o WebSocket com o Controlador de entrada NGINX, conclua as etapas na seção Usar WebSocket.
Resolução
Configurar o tamanho máximo do corpo
Se sua solicitação de tamanho de corpo exceder o tamanho máximo permitido do corpo da solicitação do cliente, o Controlador de entrada NGINX vai retornar um erro HTTP 413. Use o parâmetro client_max_body_size para configurar um tamanho maior:
nginx.ingress.kubernetes.io/proxy-body-size: 8m
Observação: O valor padrão do tamanho do corpo do proxy é 1 M. Certifique-se de alterar o número para o tamanho necessário.
Observação: Em alguns casos, pode ser necessário aumentar o tamanho máximo para todos os dados do corpo da postagem e uploads de arquivos. Para o PHP, você deve aumentar os valores post_max_size e upload_max_file_size na configuração php.ini.
Ativar o CORS
Para ativar o CORS em uma regra de entrada, adicione a seguinte anotação:
nginx.ingress.kubernetes.io/enable-cors: "true"
O exemplo a seguir mostra que o cabeçalho X-Forwarded-For é aceito:
nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
Você pode encontrar outros cabeçalhos na seção Habilitar CORS (no site do GitHub) da documentação do Controlador de entrada NGINX.
Usar o WebSocket
O NGINX suporta WebSocket (de acordo com o site do NGINX) versões 1.3 ou posteriores, sem exigência. Para evitar uma conexão fechada, você deve aumentar os valores de tempo limite de leitura do proxy e tempo limite de envio do proxy.
No exemplo a seguir, 120 segundos são definidos para o tempo limite de leitura do proxy e tempo limite de envio do proxy:
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
Observação: O valor padrão das duas anotações anteriores é de 60 segundos.