Am un fișier server nginx care servește conținut static, arată ceva simplu de genul:
Server {
asculta 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
nume_server conținut_static;
# Rotirea corectă a cheilor de criptare a biletelor de sesiune nu este implementată, deci
# dezactivează complet biletele de sesiune
ssl_session_tickets off;
# Având în vedere că dispozitivele client anticipate sunt relativ moderne, nu este nevoie
# acceptă protocoale nesigure
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers dezactivat;
locație /binare/ {
auth_basic „protecție minimă”;
auth_basic_user_file /etc/nginx/auth/.htpasswd;
rădăcină /var/www/static/;
}
locație = /apple-app-site-association {
alias /var/www/static/apple-app-site-association/apple-app-site-assocation;
tipuri { } default_type „content-type: application/json”;
}
}
Refolosesc acest lucru pe un server de producție și un server de staging. Pe serverul de staging, vreau să prezint și un API. Dacă adaug doar o altă locație în:
locație ^~ /my_cool_api/v1/ {
proxy_pass http://localhost:4000/my_cool_api/v1/;
}
Dar apoi am fișiere de server diferite pentru diferitele serviri și este prost denumit „static_content” și în acel moment. Aș dori să-l fac mai modular, așa că am încercat să las primul fișier în pace și să adaug un al doilea fișier la serverul de staging:
Server {
asculta 443 ssl;
ssl_certificate /etc/letsencrypt/live/this_host/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/this_host/privkey.pem;
nume_server my_cool_api;
# Rotirea corectă a cheilor de criptare a biletelor de sesiune nu este implementată, deci
# dezactivează complet biletele de sesiune
ssl_session_tickets off;
# Având în vedere că dispozitivele client anticipate sunt relativ moderne, nu este nevoie
# acceptă protocoale nesigure
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers dezactivat;
locație ^~ /accumulus_twig/v1/ {
proxy_pass http://localhost:4000/accumulus_twig/v1/;
}
}
Totuși, asta nu funcționează. După ce le conectez pe cele două în site-uri activate, fac doar API-ul să funcționeze în acest caz, error.log arată că nu poate găsi fișiere (statice) la /usr/share/nginx/html/binaries/
. Nu există o modalitate modulară de a avea o singură definiție de server la 443 cu toate certificatele adecvate etc., dar de a defini locații/potriviri diferite în fișiere diferite?