Vraag Hoe werken ServerName en ServerAlias?


Het is het volgende deel van een virtuele host-configuratie dat ik nader moet verduidelijken over:

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...

Dit is en voorbeeldconfiguratie, vergelijkbaar met wat ik momenteel heb (ik heb op dit moment nog geen domeinnaam).

<VirtualHost *:80> - Sta de volgende instellingen toe voor alle HTTP-aanvragen die op poort 80 zijn gedaan naar IP's waarop deze server kan worden gecontacteerd. Als de server bijvoorbeeld op meer dan één IP-adres kan worden geopend, kunt u deze richtlijn beperken tot slechts één in plaats van beide.

ServerName - Als het hostgedeelte van het HTTP-verzoek overeenkomt met deze naam, moet u het verzoek toestaan. Normaal gesproken zou dit een domeinnaam zijn die is toegewezen aan een IP, maar in dit geval moet de HTTP-verzoekhost overeenkomen met dit IP-adres.

ServerAlias - Alternatieve namen geaccepteerd door de server.

Het verwarrende deel voor mij is, in het bovenstaande scenario, als ik stel ServerAlias mytestname.com en maakte vervolgens een HTTP-verzoek aan mytestname.com, er zou een DNS-record moeten zijn dat verwijst naar het IP-adres van de server om dit te laten werken? In welk geval zijn ServerAlias ​​eigenlijk in feite EXTRA ServerName-vermeldingen?

Stel dat ik zo'n DNS-vermelding had foobar.com = 141.29.495.999 maar toen had ik het ServerName = 141.29.495.999 en ServerAlias was leeg, zou dat betekenen dat foobar.com wordt omgezet in de juiste IP, omdat er geen verwijzing is naar foobar.com in ServerName of ServerAlias?

Of zoiets. Man, ik ben in de war.


53
2017-07-02 14:00


oorsprong


Je bent enkele woorden vergeten in de voorlaatste alinea. :-) - ThatGraemeGuy


antwoorden:


Zie het als volgt:

DNS is de telefoongids / gele pagina's. Als iemand je telefoon wil bellen, kunnen ze je naam opzoeken en je telefoonnummer krijgen en die telefoon bellen. DNS doet hetzelfde, maar voor computers - wanneer iemand wil gaan www.example.com ze vragen DNS om het IP-adres en vervolgens kunnen ze contact opnemen met de computer met dat IP-adres. Dat is wat oplossen middelen. Het oplossen van een IP-adres heeft helemaal niets met Apache te maken; het is strikt een DNS-vraag.

De ServerName en ServerAlias is meer een interne telefoonlijst van een bedrijf. Uw webserver is het schakelbord; het accepteert alle inkomende verbindingen met de server. De client / beller vertelt hen vervolgens welke naam ze zoeken en ziet in de Apache-configuratie hoe deze naam moet worden behandeld.

Als de naam niet wordt vermeld als ServerName / ServerAlias ​​in de apache-configuratie, geeft apache ze altijd de eerste weergegeven VirtualHost. Of, als er helemaal geen VirtualHost is, krijgt deze dezelfde inhoud, ongeacht welke hostnaam in het verzoek wordt gegeven.

ETA: Dus, stap voor stap voor een normale verbinding:

  1. Jij typt http://www.example.com in uw browser.
  2. Uw computer vraagt ​​zijn DNS-resolver welk IP-adres hij moet gebruiken wanneer hij wil praten www.example.com.
  3. Uw computer maakt verbinding met dat IP-adres en zegt dat het wil praten www.example.com (dat is de Host:header in HTTP).
  4. De webserver kijkt naar de configuratie om erachter te komen wat te doen met een verzoek om inhoud van www.example.com. Een van de volgende dingen kan gebeuren:
    • www.example.com wordt weergegeven als een ServerName of ServerAlias voor een VirtualHost - Zo ja, dan gebruikt het de configuratie voor die VirtualHost om de inhoud te bezorgen.
    • De server heeft helemaal geen VirtualHosts - als dat het geval is, dan gebruikt het de configuratie in zijn httpd.conf om de inhoud te leveren.
    • De server heeft VirtualHosts maar www.example.com wordt niet vermeld in een van hen - in dat geval wordt de eerste Virtualhost in de lijst gebruikt om de inhoud te bezorgen.

89
2017-07-02 14:07



Dus als het hostgedeelte van een HTTP-aanvraag is www.example.com, de DNS lost het IP-adres voor die naam op en het hostgedeelte van de HTTP-aanvraag zal feitelijk een IP zijn; bij het bereiken van de server weet apache ook dat het verzoek is aangevraagd www.example.com en als er een is ServerName of ServerAlias richtlijn voor die domeinnaam, kan het de documentroot dienen? - njp
Nee - het HTTP-verzoekdeel is nog steeds de hostnaam. Ik zal een beetje meer verduidelijken. - Jenny D
Dat is fantastisch dank je :) - njp
The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.. Ik heb dit getest. Het klopt, maar ik ben niet zeker of het de eerste Virtualhost is. Bedankt voor je informatie. 1 - S.M.Mousavi


Als u Servernaam niet definieert, probeert apache2 het te raden aan de hand van / etc / hosts. ServerAlias ​​is optioneel. De meest gebruikelijke use-case is waar

ServerName example.com
ServerAlias www.example.com

Het is aan u (niet de taak van apache2) om ervoor te zorgen dat verzoeken het webserver-IP bereiken, bijvoorbeeld het registreren van een domein en het instellen van DNS-records. Een heel gebruikelijke manier om dit te doen (voor testen en ontwikkelen) zonder domein- en DNS-records is om uw lokale machine / etc / hosts-bestand zo in te stellen dat example.com verwijst naar het IP-adres van uw server.

192.168.0.12 example.com
192.168.0.12 www.example.com

16
2017-07-02 14:13