Am construit un site static simplu, pe care îl servesc cu nginx (de la docker). În prezent, încerc să implementez unele dintre cele mai bune practici, inclusiv gzip.
Am folosit câteva exemple de configurație pe care le-am găsit online, pentru a-mi configura propria configurație. Gzip funcționează pentru majoritatea tipurilor, cu excepția css...
obisnuiam răsuci pentru testare:
curl -H "Accept-Encoding: gzip" -I localhost:8400 produce:
HTTP/1.1 200 OK
Server: nginx/1.20.2
Data: miercuri, 05 ianuarie 2022 12:35:06 GMT
Tip de conținut: text/html
Conexiune: păstrați-vă în viață
Ultima modificare: joi, 30 decembrie 2021 13:24:15 GMT
Variază: Acceptare-Codare
ETag: W/"61cdb2ff-ff5"
Politica de securitate a conținutului: script-src 'self' 'unsafe-inline' 'unsafe-eval' *.transistories.org; frame-src „sine”; object-src „sine”
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Securitate: max-age=31536000;
X-XSS-Protecție: 1; mod=bloc
Codificarea conținutului: gzip
in timp ce curl -H "Accept-Encoding: gzip" -I localhost:8400/css/main.css produce:
HTTP/1.1 200 OK
Server: nginx/1.20.2
Data: miercuri, 05 ianuarie 2022 12:35:02 GMT
Tip de conținut: text/css
Lungimea conținutului: 8279
Conexiune: păstrați-vă în viață
Ultima modificare: miercuri, 05 ianuarie 2022 10:46:33 GMT
Variază: Acceptare-Codare
Etichetă: „61d57709-2057”
Expiră: sâmbătă, 29 ianuarie 2022 13:38:58 GMT
Cache-Control: max-age=2073600
Pragma: public
Cache-Control: max-age=2073600, public
Accept-Range: octeți
Fișierul de configurare principal:
utilizator nginx;
worker_proceses auto;
error_log /var/log/nginx/error.log notificare;
pid /var/run/nginx.pid;
evenimente {
conexiuni_muncitor 1024;
}
http {
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
log_format principal „$remote_addr - $remote_user [$time_local] „$request” '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log principal;
sendfile activat;
tcp_nopush activat;
keepalive_timeout 65;
gzip on;
gzip_vary on;
gzip_proxied orice;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_versiunea 1.1;
gzip_min_length 256;
gzip_types
aplicație/atom+xml
aplicație/geo+json
aplicație/javascript
aplicație/x-javascript
aplicație/json
application/ld+json
aplicație/manifest+json
aplicație/rdf+xml
aplicație/rss+xml
application/xhtml+xml
aplicație/xml
font/eot
font/otf
font/ttf
imagine/svg+xml
text/css
text/javascript
text/js
text/ simplu
text/xml;
gzip_disable „msie6”;
server_tokens dezactivat;
includ /etc/nginx/conf.d/transistories.conf;
}
Fișierul de configurare inclus:
Server {
asculta 80;
asculta [::]:80;
nume_server gazdă locală;
#charset koi8-r;
access_log /var/log/nginx/host.access.log principal;
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.transistories.org; frame-src 'self'; object-src 'self'";
add_header X-Frame-Options „SAMEORIGIN” întotdeauna;
add_header X-Content-Type-Options „nosniff” întotdeauna;
add_header Strict-Transport-Security "max-age=31536000;" mereu;
add_header X-XSS-Protection "1; mode=block";
locație ~* \.(?:ico|css|js|gif|jpe?g|png|eot|woff2?|ttf|svg)$ {
root /usr/share/nginx/html;
expiră 24d;
add_header Pragma public;
add_header Cache-Control "max-age=2073600, public";
}
Locație / {
root /usr/share/nginx/html;
index index.html;
}
pagina de eroare 404 /404.html;
}
În cazul în care este relevant; Dockerfile pe care îl folosesc:
Fișierele css sunt generate din scss, folosind node-sass.
FROM node:current-alpine3.14 AS builder
WORKDIR /usr/src/app
COPIEAZĂ pachetul*.json ./
RUN instalarea npm
COPIEAZĂ active ./active
COPIEAZĂ gulpfile.js .
COPY src ./src
RUN npm run build:prod
RUN npm rulați sitemap
RUN npm rulare rss
DE LA nginx:latest
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
COPIEAZĂ nginx/nginx.conf /etc/nginx
COPIEAZĂ nginx/conf.d /etc/nginx/conf.d
Aveți idee de ce s-ar putea întâmpla acest lucru și cum aș putea rezolva asta?
Mulțumesc anticipat!