concat: Módulo de Concatenção HTTP para NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-concat
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-concat
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_concat_module.so;
Este documento descreve o nginx-module-concat v1.2.3 lançado em 15 de janeiro de 2020.
Introdução
Este é um módulo que é distribuído com
tengine, que é uma distribuição do
Nginx usada pelo site de e-commerce/leilão
Taobao.com. Esta distribuição
contém alguns módulos que são novos na cena do Nginx. O
módulo ngx_http_concat é um deles.
O módulo é inspirado pelo
modconcat do Apache. Ele segue o mesmo
padrão para habilitar a concatenação. Ele usa dois ?, assim:
http://example.com/??style1.css,style2.css,foo/style3.css
Se um terceiro ? estiver presente, ele é tratado como string de versão. Assim:
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234
Exemplo de configuração
location /static/css/ {
concat on;
concat_max_files 20;
}
location /static/js/ {
concat on;
concat_max_files 30;
}
Diretrizes do módulo
concat on | off
padrão: concat off
contexto: http, server, location
Habilita a concatenação em um determinado contexto.
concat_types tipos MIME
padrão: concat_types: text/css application/x-javascript
contexto: http, server, location
Define os tipos MIME que podem ser concatenados em um determinado contexto.
concat_unique on | off
padrão: concat_unique on
contexto: http, server, location
Define se apenas arquivos de um determinado tipo MIME podem ser concatenados ou se
vários tipos MIME podem ser concatenados. Por exemplo, se definido como off,
então em um determinado contexto você pode concatenar arquivos Javascript e CSS.
Note que o valor padrão é on, significando que apenas arquivos com o mesmo
tipo MIME são concatenados em um determinado contexto. Portanto, se você tiver CSS e
JS, não poderá fazer algo assim:
http://example.com/static/??foo.css,bar/foobaz.js
Para fazer isso, você deve definir concat_unique off. Isso se aplica
a qualquer outro tipo de arquivos que você decidir concatenar adicionando
o respectivo tipo MIME via concat_types.
concat_max_files número
padrão: concat_max_files 10
contexto: http, server, location
Define o número máximo de arquivos que podem ser concatenados em um determinado contexto. Note que um determinado URI não pode ser maior que o tamanho da página da sua plataforma. No Linux, você pode obter o tamanho da página emitindo:
getconf PAGESIZE
Normalmente é 4k. Portanto, se você tentar concatenar muitos arquivos juntos em
um determinado contexto, pode atingir essa barreira. Para superar essa limitação definida pelo SO, você deve usar
a diretiva large_client_header_buffers.
Defina-a para o valor que você precisa.
concat_delimiter: string
padrão: NENHUM
contexto: http, server, location
Define o delimitador entre dois arquivos. Se a configuração for concat_delimiter "\n", um '\n' seria inserido entre 1.js e 2.js ao visitar http://example.com/??1.js,2.js
concat_ignore_file_error: on | off
padrão: off
contexto: http, server, location
Se deve ignorar 404 e 403 ou não.
Marcação de lançamentos
Perusio está mantendo um lançamento marcado em http://github.com/alibaba/nginx-http-concat em sincronia com os lançamentos do Tengine. Consulte lá para as últimas tags não comprometidas.
Outros módulos tengine no GitHub
-
footer filter: permite adicionar alguns dados extras (markup ou não) ao final de um corpo de requisição. É prático para coisas como adicionar carimbos de data/hora ou outras coisas diversas sem precisar ajustar sua aplicação.
-
http slice: permite servir um arquivo por partes. Uma espécie de intervalo de bytes reverso. Útil para servir arquivos grandes sem sobrecarregar a rede.
Outras compilações
-
Como mencionado no início, este módulo é parte da
tenginedistribuição do Nginx. Portanto, você pode querer economizar algum trabalho e apenas construí-lo do zero usandotengineem vez da fonte oficial do Nginx. -
Se você gosta de um pacote Nginx de ponta (das versões de desenvolvimento) para Debian feito sob medida, então você pode estar interessado no pacote HA/HP debian do Nginx com suporte embutido para nginx-http-concat. Instruções para usar o repositório e fazer o pacote viver feliz dentro de uma instalação de distribuição estável são fornecidas.
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-concat.