Puncte:0

De ce fișierul meu nginx conf redirecționează subdomeniile către domeniul principal?

drapel cn

Am eliminat toate fișierele din /etc/nginx/sites-enabled/ director.

De asemenea, am eliminat toate fișierele din /etc/nginx/sites-available/ director.

Am un singur dosar /etc/nginx/conf.d/ numit numele-domeniul-meu.com.conf si contine:

Server {
    asculta 80;
    nume_server numele-domeniul-meu.com www.numele-domeniul-meu.com;
    returnează 301 https://$server_name$request_uri;
}

Server {
    asculta 443 ssl;
    nume_server numele-domeniul-meu.com www.numele-domeniul-meu.com;

    ssl_certificate /etc/letsencrypt/live/my-domain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-domain-name.com/privkey.pem;

    includ /etc/letsencrypt/options-ssl-nginx.conf;

    Locație / {
        proxy_pass http://localhost:4000;
    }
}

Proxy traficul către un container docker care ascultă pe portul 4000.

Funcționează grozav pentru numele-domeniul-meu.com și www.numele-domeniul-meu.com.

Cu toate acestea, redirecționează și TOATE dintre subdomeniile mele care au fost definite în DNS.

Acesta nu este comportamentul dorit. Vreau doar ca acest fișier să servească aceste două domenii, nu mai mult.

Ce este în neregulă aici?

Actualizați:

Am adăugat un alt fișier, numit sudomain.my-domain-name.com.conf și am adăugat această configurație în interiorul ei:

Server {
    asculta 80;
    nume_server subdomeniu.nume-domeniu-meu.com;
    returnează 301 https://$server_name$request_uri;
}

Server {
    asculta 443 ssl;
    nume_server subdomeniu.nume-domeniu-meu.com;

    ssl_certificate /etc/letsencrypt/live/my-domain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-domain-name.com/privkey.pem;

    includ /etc/letsencrypt/options-ssl-nginx.conf;

    Locație / {
        proxy_pass http://localhost:3131;
    }
}

Și nginx -t arata succes si nginx -s reîncărcare se aplica de asemenea. Dar din nou când merg la subdomeniu.numele-domeniul-meu.com, în loc să primesc cel de-al doilea docker care rulează pe portul 3131, din nou sunt redirecționat către numele-domeniul-meu.com pagină.

Puncte:1
drapel pl

Vă rugăm să afișați configurația nginx a subdomeniilor dvs.

EDITARE 1:

Încercați să adăugați acest fișier de configurare (numiți-l după cum doriți):

Server {
    asculta 80;
    numele_server numele-subdomeniul-meu.numele-domeniul-meu.com www.numele-subdomeniul-meu.numele-domeniul-meu.com;
    returnează 301 https://$server_name$request_uri;
}

Server {
    asculta 443 ssl;
    
    numele_server numele-subdomeniul-meu.numele-domeniul-meu.com www.numele-subdomeniul-meu.numele-domeniul-meu.com;

    ssl_certificate /etc/letsencrypt/live/my-subdomain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-subdomain-name.com/privkey.pem;

    includ /etc/letsencrypt/options-ssl-nginx.conf;

    Locație / {
# Puteți schimba portul, adresa URL dacă doriți
        proxy_pass http://localhost:4000;
    }
}

EDITARE 2:

De exemplu, aveți acest subdomeniu: test.my-domain.com Apoi, trebuie să vă configurați serverul pentru a servi fișiere din acel subdomeniu. Pentru asta, trebuie să creăm un fișier de configurare nginx.

Saeed Neamati avatar
drapel cn
Nu există niciun fișier de configurare pentru subdomenii. Sunt definite doar în DNS-ul meu, care este CloudFlare.
Saeed Neamati avatar
drapel cn
Acel fișier de configurare este singurul meu fișier de configurare din directorul `/etc/nginx/conf.d/`.
drapel pl
Trebuie să creați un fișier de configurare pentru fiecare domeniu și subdomeniu.
Saeed Neamati avatar
drapel cn
Dragă @ArRakin, mulțumesc pentru răspuns.Dar nu reușesc să înțeleg cum mă ajută asta.
Saeed Neamati avatar
drapel cn
Cu tot respectul, cred că ați înțeles greșit problema mea.
drapel pl
Editez această postare acum.
Saeed Neamati avatar
drapel cn
Să presupunem că am doar subdomeniile mele în DNS și nu-mi pasă să servesc nimic din ele. De ce are Nginx acest comportament cu acest singur fișier? De ce redirecționează **TOT** traficul către domeniul meu principal, în timp ce i se spune în mod explicit să deservească numai domeniul meu principal?
Michael Hampton avatar
drapel cz
@SaeedNeamati Ați trimis traficul către nginx, așa că trebuie să facă ceva cu el. În cazul în care nu ați specificat un bloc de server de utilizat, acesta va folosi implicit.
Saeed Neamati avatar
drapel cn
acea logica este absurda. îmi poți arăta unde este **implicit**? configurația mea este explicită și nu are valori implicite în ea.
Saeed Neamati avatar
drapel cn
Vă rugăm să vedeți actualizarea.
djdomi avatar
drapel za
ne arată rezultatul complet al lui `nginx -T`
Puncte:0
drapel sz

Cu toate acestea, redirecționează și TOATE subdomeniile mele care au fost definite în DNS. [...] Acesta nu este comportamentul intenționat. Vreau doar acest fișier pentru a servi aceste două domenii, nu mai mult.

Dacă un subdomeniu se rezolvă la aceeași adresă IP ca și serverul care găzduiește cele două domenii pe care de fapt doriți să le serviți, Nginx va fi forțat să facă față acestor solicitări primite.

De ce redirecționează TOT traficul către domeniul meu principal, în timp ce este în mod explicit mi se spune să deservesc doar domeniul meu principal?

Acesta este comportamentul implicit. Nginx încearcă să direcționeze cererile către serverul corespunzător utilizând Gazdă Antet HTTP, dar dacă nu există potriviri, direcționează traficul către serverul implicit. Aceasta pare să fie sursa confuziei.

Dacă câmpul antet gazdă nu corespunde unui nume de server, NGINX Plus direcționează cererea către serverul implicit pentru portul pe care cererea a sosit. Serverul implicit este primul listat în nginx.conf, cu excepția cazului în care includeți parametrul default_server la directiva listen pentru a desemna în mod explicit un server ca implicit1.

Pentru a împiedica efectiv serverul să difuzeze conținutul domeniului dvs., cu excepția cazului în care este solicitat în mod specific, puteți adăuga un bloc de server implicit real. Ai putea chiar să returnezi 204 No Content pentru toate solicitările dacă ai dori, deși ceva și mai puțin mai nuanțat este probabil întotdeauna de preferat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.