TLDR: Nginx acordă prioritate subdomeniilor în ordinea alfabetică a fișierelor de configurare și vreau să știu o modalitate de a preveni acest lucru. Aceasta este asemănătoare la acest întrebare, dar sunt mai interesat să îmi îmbunătățesc sistemul.
Am (aveam) două secțiuni pe serverul meu: una pentru un site web static și una pentru instanța mea dokuwiki. Am vrut să se încarce dokuwiki când cineva a accesat example.com, iar site-ul web static să se încarce când cineva a accesat static.example.com. În cele din urmă, am vrut ca wiki.example.com să indice întotdeauna spre dokuwiki, în cazul în care s-a schimbat implicit.
Pentru a realiza acest lucru, am avut două fișiere în /etc/nginx/sites-available.
dokuwiki (Aceasta este doar o configurație comună dokuwiki cu certbot rulat pe ea)
Server {
dacă ($gazdă = www.example.com) {
returnează 301 https://$host$request_uri;
}
dacă ($gazdă = exemplu.com) {
returnează 301 https://$host$request_uri;
}
dacă ($gazdă = wiki.example.com) {
returnează 301 https://$host$request_uri;
}
asculta 80;
asculta [::]:80;
nume_server wiki.example.com example.com www.example.com;
returnează 301 https://$server_name$request_uri;
}
Server {
asculta [::]:443 ssl;
asculta 443 ssl;
server_name example.com www.example.com wiki.example.com;
client_max_body_size 4M;
client_body_buffer_size 128k;
rădăcină /dokuwiki/dokuwiki-2020-07-29;
index doku.php;
locație ~ /(conf/|bin/|inc/|install.php) { deny all; }
locație ~ ^/data/ { intern ; }
locație ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {
expiră 365d;
}
locație / { try_files $uri $uri/ @dokuwiki; }
locație @dokuwiki {
rescrie ^/_media/(.*) /lib/exe/fetch.php?media=$1 ultimul;
rescrie ^/_detail/(.*) /lib/exe/detail.php?media=$1 ultimul;
rescrie ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 ultima;
rescrie ^/(.*) /doku.php?id=$1&$args ultimul;
}
locație ~ \.php$ {
try_files $uri $uri/ /doku.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
static
Server {
rădăcină /var/www/example;
index index.html index.htm index.nginx-debian.html;
nume_server static.example.com;
Locație / {
try_files $uri $uri/ =404;
}
asculta [::]:443 ssl ipv6only=on;
asculta 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
includ /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Acest sistem a funcționat exact așa cum mă așteptam. Cu toate acestea, apoi am adăugat commafeed pe serverul meu. Scopul meu a fost să accesez commafeed prin rss.example.com. Commafeed rulează pe portul 8082, așa că am făcut un proxy_pass la example.com/8082 în acest fișier
commafeed
Server {
asculta 443;
asculta [::]:443;
rădăcină /var/www/commafeed;
index index.html index.htm index.nginx-debian.html;
nume_server rss.example.com www.rss.example.com;
Locație / {
proxy_pass http://example.com:8082/;
proxy_buffering dezactivat;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
}
}
Când am făcut asta, am primit o resetare a conexiunii în browserul meu pentru toate domeniile example.com și acest mesaj de eroare a fost înregistrat
exemplu:/etc/nginx/sites-available# tail -f /var/log/nginx/error.log -n 0
2021/09/28 03:10:36 [eroare] 32479
2021/09/28 03:10:36 [eroare] 32479
Cu toate acestea, când am redenumit fișierul în „zcommafeed”, totul a funcționat conform intenției. Adică, toate subdomeniile vechi au funcționat ca înainte, precum și rss.example.com care indică către commafeed.
Acum, în timp ce acest lucru funcționează, acest lucru pare să implice că există o modalitate mai bună de a face acest lucru, care nu implică acordarea de atenție la ordinea alfabetică a fișierelor. Sunt nou la NGINX, așa că aș aprecia cu adevărat ajutorul!!