Eu penso no seguinte para sua configuração do nginx:
- pois é apenas o cabeçalho de expiração que difere para seus dois locais diferentes, embora ambos correspondam ao proxy com o mesmo servidor.
- tente colocar os dois locais no bloco único
- com base na string de consulta (ou string de correspondência de local), defina um expira cabeçalho
.
server {
listen 80;
server_name salessystem.acmecorp.com;
location ~* (/extjs/|/) {
## proxy_buffers 128 256k;
proxy_pass http://localhost:5400/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'X-UA-Compatible' 'IE=Edge;chrome=1';
expires max;
if ($query_string ~ \/extjs\/) {
expires epoch;
}
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 7;
gzip_proxied any;
gzip_types text/html text/css text/pdf application/json application/x-javascript text/javascript;
access_log off;
break;
}
}
No entanto, teste de acordo com suas necessidades, especialmente perto das correspondências de expressão regular em location
e query_string
value matching.
No entanto, não está claro, por que você deseja que extjs
seja servido em um servidor proxy (parece um servidor de aplicativos dinâmico), já que eles são apenas arquivos de texto simples, se minha suposição estiver correta. As solicitações pertencentes ao extjs
não precisam passar pelo proxy ou pelo sistema lógico do aplicativo, mas podem ser atendidas independentemente por meio do sistema de arquivos. Eu penso em mantê-lo em sua própria localização separada, e ter as diretivas exclusivas gzip / expires exclusivas para ele em seu próprio bloco de localização, enquanto as outras diretivas comuns podem ser mantidas no próprio bloco de servidor.
Por exemplo:
server {
...
common gzip directives
common header setters
common expires setters
...
location / {
proxy to backend app server
settings unique to / location
..
}
location /extjs {
settings unique to /extjs location
expires header reset
...
}
}