Puncte:0

Două site-uri web VirtualHost nu funcționează împreună sub Apache 2.4

drapel fr

Rulez Apache 2.4 sub Ubuntu 18.04

Am această problemă în care toate adresele pe care le scriu în bara browserului sunt redirecționate unu dintre cele două site-uri web pe care le-am configurat (în acest caz, ori de câte ori introduc o adresă la care ar trebui să redirecționeze alt-site, mi se arată site-ul sub jekyll numai.)

De exemplu:

  • tastare jekyll pe browser îmi arată site-ul jekyll, așa cum era de așteptat
  • tastare alt-site pe browser imi arata si site-ul jekyll, chiar dacă există un alt VirtualHost care ascultă pe acest nume

Am astea două site-uri separate configurat ca VHosts sub /etc/apache2/sites-available (amândoi activat prin intermediul a2ensite)

  • jekyll.conf

    <VirtualHost *:80>
          DirectoryIndex index.html
          DocumentRoot /var/www/jekyll/_site
          LimitRequestFieldSize 48000
           <Directory />
                  Options FollowSymLinks
                  AllowOverride None
          </Directory>
          <Directory /var/www/jekyll/_site>
                  AllowOverride All
                  Order allow,deny
                  allow from all
          </Directory>
          <Directory /var/www/jekyll/_site/>
                  Order allow,deny
                  allow from all
          </Directory>
    
          ServerName jekyll
          ServerName http://jekyll
          ServerName http://localhost/jekyll
    
          ServerAdmin webmaster@localhost
    </VirtualHost>
    
  • alt-site.conf

    <VirtualHost *:80>
          DirectoryIndex index.html
          DocumentRoot /var/www/other-site/_site
          LimitRequestFieldSize 48000
           <Directory />
                  Options FollowSymLinks
                  AllowOverride None
          </Directory>
          <Directory /var/www/other-site/_site>
                  AllowOverride All
                  Order allow,deny
                  allow from all
          </Directory>
          <Directory /var/www/other-site/_site/>
                  Order allow,deny
                  allow from all
          </Directory>
    
          ServerName other-site
          ServerName http://other-site
          ServerName http://localhost/other-site
    
          ServerAdmin webmaster@localhost
    
    </VirtualHost>
    

Am adăugat și aceste intrări la /etc/hosts astfel încât localhost să fie redirecționat către fiecare site:

127.0.0.1 localhost
127.0.0.1 localhost/jekyll
127.0.0.1 localhost/alt-site
127.0.0.1 jekyll
127.0.0.1 alt site
127.0.1.1 felipe-Inspiron-7559
Puncte:1
drapel in

The Numele serverului Atributul din fișierele de configurare Apache nu trebuie repetat, deoarece fiecare linie ulterioară le va înlocui pe cele anterioare.

În schimb, puteți folosi Numele serverului cu ServerAlias ca aceasta:

ServerNume jekyll
ServerAlias ​​jekyll.local *.jekyll *.jekyll.local

Rețineți că acest lucru este ilogic:

127.0.0.1 localhost/jekyll
127.0.0.1 localhost/alt-site

Acestea nu sunt domenii (sau subdomenii), ci căi sub gazdă locală. Ca urmare, numai gazdă locală vor fi observate. Acesta este motivul pentru care nu l-am inclus în configurația Apache, așa cum s-a menționat mai sus.

Deci, având în vedere acest lucru, puteți avea Trei Fișiere de configurare Apache:

⢠000-jekyll.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName jekyll
      ServerAlias jekyll.local *.jekyll *.jekyll.local

      DirectoryIndex index.html
      DocumentRoot /var/www/jekyll/_site
      LimitRequestFieldSize 48000

      <Directory /var/www/jekyll/_site>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/jekyll-error.log
      CustomLog ${APACHE_LOG_DIR}/jekyll-access.log combined
</VirtualHost>

⢠001-altul.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName other-site
      ServerAlias other-site.local *.other-site *.other-site.local

      DirectoryIndex index.html
      DocumentRoot /var/www/other-site/_site
      LimitRequestFieldSize 48000

      <Directory /var/www/other-site/_site>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/other-error.log
      CustomLog ${APACHE_LOG_DIR}/other-access.log combined
</VirtualHost>

⢠999-default.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName localhost
      ServerAlias *.localhost * *.*

      DirectoryIndex index.html
      DocumentRoot /var/www
      LimitRequestFieldSize 48000

      <Directory /var/www>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/local-error.log
      CustomLog ${APACHE_LOG_DIR}/local-access.log combined
</VirtualHost>

Apache procesează traficul în funcție de ordinea fișierelor de configurare. Deci orice domeniu care se potrivește cu cele specificate în 000-jekyll.conf va fi gestionat de acel dosar. Dacă nu se găsesc potriviri, atunci 001-altul.conf vor fi verificate. Dacă nu se găsesc potriviri, atunci 999-default.conf va fi folosit. Rețineți că ServerAlias în 999-default.conf fișier și modul în care se bazează pe metacaracterele larg deschise. Acest lucru înseamnă că va fi tratat ca un catch-all pentru traficul care nu se potrivește cu fișierele de configurare definite.

Notă: Fișierele de configurare Apache au fost simplificate pentru a elimina irelevante Director blocuri și pentru ca fiecare gazdă să folosească propriile lor jurnalele de erori.

Felipe avatar
drapel fr
Mulțumesc, chiar am încurcat directivele `ServerName` acolo. Mulțumiri!

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.