Ao carregar um PDF de 1MB, recebo « upload é muito grande, o máximo é 4MB »

Estou recebendo a mensagem de erro « o upload é muito grande, o tamanho máximo é 4MB » ao fazer upload de arquivos PDF com menos de 4MB.
Aqui estão meus testes:

  • um PDF de 68KB funciona OK como esperado.
  • um JPG de 2.3M funciona OK como esperado.
  • um pdf (2.3 MB) de 2.3M dispara o erro!
  • um JPG de 3.6MB funciona OK como esperado.

Estranhamente, o upload é bem-sucedido em meta.discourse.org, talvez você tenha alterado algumas configurações.

Não modifiquei nenhuma configuração que contenha max.

Estou usando a versão 2.9.0.beta9 4af080d20b, em uma instância auto-hospedada em https://discuss.afpy.org.

Não há problema com este arquivo nos meus fóruns, nos quais não alterei o limite de tamanho do arquivo.

1 curtida

Executando em meu site de teste (4b561277a9) sem alterações nas configurações de max ou limites de arquivo e ele carrega bem para mim se eu adicionar pdf às extensões autorizadas, e exibe a mensagem de erro correta de ‘Desculpe, o arquivo que você está tentando carregar não é autorizado’ quando é redefinido para o padrão.

Há algo mais que eu possa tentar para ver se consigo replicar?

Não, pois o tamanho desse arquivo está abaixo do limite de tamanho padrão do nginx. No entanto, essa é uma boa pista.

O site que @Julien_Palard auto-hospeda tem um proxy reverso personalizado entre o Discourse e o navegador, então esse erro provavelmente vem de um proxy reverso mal configurado.

5 curtidas

Você tem um proxy reverso na frente do seu Discourse? Como você instalou?

Estou usando nginx, minha configuração fica assim:

Então minha configuração do nginx é:

      server
      {
          listen [::]:80; listen 80;
          server_name {{ discourse_domain }};
          access_log /var/log/nginx/{{ discourse_domain }}-access.log;
          error_log /var/log/nginx/{{ discourse_domain }}-error.log;
          return 301 https://$host$request_uri;
      }
      server
      {
          listen [::]:443 ssl; listen 443 ssl;
          server_name {{ discourse_domain }};
          access_log /var/log/nginx/{{ discourse_domain }}-access.log;
          error_log /var/log/nginx/{{ discourse_domain }}-error.log;
          include snippets/letsencrypt-{{ discourse_domain }}.conf;
          location / {
              proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
              proxy_set_header Host $http_host;
              proxy_http_version 1.1;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto https;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }

É um nginx 1.18.0-6.1+deb11u2 do Debian bullseye.

Estou recebendo um 413 Request Entity Too Large do nginx, então claramente preciso investigar mais para entender por que uma imagem “grande” está OK, mas um PDF “não tão grande” não está…

O JPG de 3.0MB tem um Content-Length de 557215, então 0.5MB surpreendentemente!
O PDF de 2.3MB tem um Content-Length de 2460137, então 2.3MB sem surpresas.

O Discourse redimensiona o jpg antes de fazer o upload dele?

Nos JPEGs que passei, vejo a largura e a altura da imagem como diferentes depois de fazer o upload deles para o Discourse (Tentei com https://apod.nasa.gov/apod/image/2209/DSCF4968_PS_Lioce.jpg, é uma imagem de 5703x3892, 3.6MB, mas uma vez carregada é uma imagem de 1920×1310 de 153 KB).

1 curtida

O padrão do nginx para client_max_body_size é 1MB, JPEGs redimensionados pelo lado do cliente estão todos abaixo de 1MB, tudo ficou claro.

Corrigi minha configuração do nginx: Set client_max_body_size to 4m to match Discourse configuration. · AFPy/infra@861af29 · GitHub

E agora funciona. Você estava certo: era meu proxy reverso.

Obrigado a todos :heart: e desculpem o barulho!

4 curtidas

Não quero adicionar incorretamente a tag unsupported-install, mas acho que este tópico deveria tê-la desde o início, certo?

Bem, existem tópicos para explicar como configurar um proxy reverso, então isso é algo com que normalmente ajudamos.

1 curtida

Angry Season 4 GIF by The Office

SIM! E nós até temos um post no blog sobre esse recurso super incrível

7 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.