Puncte:0

Există o modalitate de a defini o gazdă virtuală Apache 2 cu un ServerName parțial

drapel cn

Am un instrument care generează blocuri de configurare Apache 2. Aș dori ca ceea ce generează să fie independent de orice este ServerName real, dar fără a fi nevoie să rulez efectiv pe/parse configurația Apache a mașinii țintă.

Cu alte cuvinte, ceea ce am nevoie este ceva de genul acesta:

<VirtualHost *>
   ServerName foobar    // <-- no top level domain
   ...
</VirtualHost>

Se pare că, din cititul documentelor, câmpul ServerName trebuie să fie întotdeauna numele de domeniu complet calificat și, astfel, în mod inerent, un bloc vhost nu poate fi scris fără a cunoaște FQDN-ul serverului țintă. Este adevărat sau există vreo soluție?

Puncte:1
drapel in

da Numele serverului trebuie să fie o identificare reală a serverului, dar poate fi și adresa IP. ServerAlias pe de altă parte, poate conține metacaractere. Documentație mentioneaza asta.

Dar mai spune că nu este obligatoriu

Dacă nu este specificat ServerName, serverul încearcă să deducă numele de gazdă vizibil al clientului solicitând mai întâi sistemului de operare numele de gazdă a sistemului și, dacă aceasta nu reușește, efectuând o căutare inversă a unei adrese IP prezente pe sistem.

Puncte:0
drapel ar
bob

Nici a Numele serverului nici a ServerAlias sunt directive necesare într-un bloc VirtualHost.

Puteți pur și simplu să le omiteți.

Manualul explică când faci asta:

Daca nu Numele serverului este specificat, serverul încearcă să deducă numele de gazdă vizibil al clientului solicitând mai întâi sistemului de operare numele de gazdă a sistemului și, dacă aceasta nu reușește, efectuând o căutare inversă a unei adrese IP prezente în sistem.

care poate fi exact ceea ce ai nevoie.

În plus, in practica acele directive vor accepta, de asemenea, aproape orice șir...
Un singur cuvânt, ca gazdă locală sau Test și exemplu vor funcționa, la fel și lucrurile care arată mai mult ca FQDN-uri, dar care nu sunt nume DNS efective, cum ar fi nu.există.tld.denumit.serverfault. Utilizarea așa ceva poate duce la un avertisment de pornire în jurnalul de erori (pe care îl puteți evita adăugând acel șir la /etc/hosts) și poate duce la o situație în care Apache httd nu poate distinge blocul dvs. VirtualHost de oricare alții prezenti și setările dvs. nu vor avea efect. https://httpd.apache.org/docs/2.4/vhosts/details.html

drapel cn
Mulțumesc, dar nu asta caut. Este mai degrabă ca `ServerName foo.${HOSTNAME}` care ar funcționa, dacă HOSTNAME env var ar fi setat de fapt pentru serverul Apache. Din păcate, se pare că sistemele moderne de sistem oferă medii foarte curate fără această valoare și nu există nicio modalitate de a transforma ideea Apache despre numele gazdei într-o variabilă. Doar omiterea directivelor nu ar funcționa, deoarece scopul aici este de a avea mai multe fragmente de configurare care sunt _independente_ de numele de gazdă al mașinii. Și în mod ideal să funcționeze cu o configurație standard Apache.

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.