Score:0

เว็บไซต์ VirtualHost สองเว็บไซต์ไม่ทำงานร่วมกันภายใต้ Apache 2.4

ธง fr

ฉันใช้ Apache 2.4 ภายใต้ Ubuntu 18.04

ฉันมีปัญหาตรงที่ที่อยู่ทั้งหมดที่ฉันพิมพ์บนแถบเบราว์เซอร์ถูกเปลี่ยนเส้นทางไป หนึ่ง จากสองเว็บไซต์ที่ฉันกำหนดค่าไว้ (ในกรณีนี้ เมื่อใดก็ตามที่ฉันพิมพ์ที่อยู่ที่ควรเปลี่ยนเส้นทางไป เว็บไซต์อื่นฉันได้รับแสดงเว็บไซต์ภายใต้ เจคิล เท่านั้น.)

ตัวอย่างเช่น:

  • พิมพ์ เจคิล บนเบราว์เซอร์แสดงเว็บไซต์ jekyll ตามที่คาดไว้
  • พิมพ์ เว็บไซต์อื่น บนเบราว์เซอร์ แสดงเว็บไซต์ jekyll ให้ฉันด้วยแม้ว่าจะมี VirtualHost อื่นกำลังฟังชื่อนั้นอยู่

ฉันมีสิ่งเหล่านี้ สองไซต์แยกกัน กำหนดค่าเป็น VHosts ภายใต้ /etc/apache2/sites-available (เขาทั้งคู่ เปิดใช้งาน ทาง เอทูเอนไซต์)

  • 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>
    
  • other-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>
    

ฉันได้เพิ่มรายการเหล่านี้ด้วย / etc / โฮสต์ เพื่อให้ localhost ถูกเปลี่ยนเส้นทางไปยังแต่ละไซต์:

127.0.0.1 localhost
127.0.0.1 localhost/jekyll
127.0.0.1 localhost/other-site
127.0.0.1 เจคิล
127.0.0.1 เว็บไซต์อื่น
127.0.1.1 felipe-Inspiron-7559
Score:1
ธง in

เดอะ ชื่อเซิร์ฟเวอร์ แอตทริบิวต์ในไฟล์การกำหนดค่า Apache ของคุณไม่จำเป็นต้องซ้ำ เนื่องจากแต่ละบรรทัดที่ตามมาจะแทนที่บรรทัดก่อนหน้า

คุณสามารถใช้แทน ชื่อเซิร์ฟเวอร์ กับ นามแฝงเซิร์ฟเวอร์ แบบนี้:

ชื่อเซิร์ฟเวอร์ jekyll
เซิร์ฟเวอร์นามแฝง jekyll.local *.jekyll *.jekyll.local

โปรดทราบว่าสิ่งนี้ไม่มีเหตุผล:

127.0.0.1 localhost/jekyll
127.0.0.1 localhost/other-site

สิ่งเหล่านี้ไม่ใช่โดเมน (หรือโดเมนย่อย) แต่เป็นเส้นทางภายใต้ โลคัลโฮสต์. เป็นผลให้เท่านั้น โลคัลโฮสต์ จะถูกสังเกต นี่คือเหตุผลที่ฉันไม่ได้รวมไว้ในการกำหนดค่า Apache ตามที่ระบุไว้ข้างต้น

ด้วยเหตุนี้ คุณจึงสามารถมี สาม ไฟล์การกำหนดค่า 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-other.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 ประมวลผลทราฟฟิกตามลำดับของไฟล์คอนฟิกูเรชัน ดังนั้นโดเมนใดๆ ที่ตรงกับที่ระบุใน 000-jekyll.conf จะถูกจัดการโดยไฟล์นั้น หากไม่พบรายการที่ตรงกัน 001-other.conf จะถูกตรวจสอบ หากไม่พบรายการที่ตรงกัน 999-default.conf จะถูกนำไปใช้. หมายเหตุ นามแฝงเซิร์ฟเวอร์ ใน 999-default.conf ไฟล์และวิธีการอาศัยไวลด์การ์ดที่เปิดกว้าง ซึ่งหมายความว่าจะถือว่าเป็น catch-all สำหรับทราฟฟิกที่ไม่ตรงกับไฟล์ปรับแต่งที่กำหนดไว้

บันทึก: ไฟล์คอนฟิกูเรชันของ Apache ได้รับการปรับปรุงเพื่อขจัดสิ่งที่ไม่เกี่ยวข้องออกไป ไดเรกทอรี บล็อกและเพื่อให้แต่ละโฮสต์ใช้บันทึกข้อผิดพลาดของตนเอง

Felipe avatar
fr flag
ขอบคุณ ฉันทำคำสั่ง 'ชื่อเซิร์ฟเวอร์' ผิดพลาดจริงๆ ขอบคุณ!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา