Fyra standardinställningar i nginx som kostar dig i det tysta
Standardkonfigurationer i nginx är gjorda för att fungera i alla miljöer, men de är sällan optimerade för modern webbdrift. Här är fyra vanliga standardinställningar som kostade oss prestanda och korrekthet innan vi rättade till dem.
1. add_header och arvsmekanismen
En av de mest förrädiska detaljerna i nginx är hur add_header ärvs. Om du definierar säkerhetsheaders (som HSTS eller CSP) på http- eller server-nivå, och sedan lägger till en enda add_header inuti ett location-block, skrivs alla överordnade headers över för det blocket. Lösningen är att samla gemensamma headers i en separat snippet och inkludera den explicit.
2. Mjuka 404-fel med try_files
En vanlig konfiguration för ensidesapplikationer (SPA) är try_files $uri $uri/ /index.html;. När detta tillämpas på hela sajten returnerar varje felaktig resurskod 200 OK med startsidans HTML, vilket skapar oändliga duplicerade sidor för sökmotorer och förvirrar API-anrop.
3. Tioåriga cache-headers på filer utan versionshantering
Att sätta expires max på statiska filer utan unika innehållshashar eller versionsparametrar innebär att besökare som sparat filen aldrig får uppdateringar när en bild eller stilmall ändras.
4. Utkommenterad gzip_types i standardkonfigurationen
Standardpaketet för nginx levereras ofta med gzip on, men med gzip_types begränsad till enbart text/html. CSS, JavaScript och JSON skickas då helt okomprimerade om du inte explicit listar dem.