ปัญหาที่พบ
ได้ตั้ง Webserver ให้รองรับหลายๆโดเมนที่เรียกว่า Virtual Host ด้วย Apache2 โดยมี Domain สมมุติว่าตั้งชื่อว่าDomain1.com กับ Domain2.com
โดยใช้ Domain1.com เป็นโดเมนหลัก สมมุติของเซิร์ฟเวอร์ชื่อว่า server ดังนั้นจะมีรูปแบบว่า server.domain1.com config file อยู่ที่ /etc/Apache2/sites-enables/000-default โดยตั้ง config file ดังนี้
NameVirtualHost *:80 <VirtualHost *> ServerAdmin webmaster@localhost ServerName domain1.com DocumentRoot /home/www/hosts/domain1.com/docs <Directory> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/www/host/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # Uncomment this directive if you want to see apache2's # default start page (in /apache2-default) when you go to / #RedirectMatch ^/$ /apache2-default/ </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ </Directory "/usr/lib/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>Domain2.com มี config file อยู่ที่ /etc/Apache2/sites-enabled/domain2.com.conf
<VirtualHost *> DocumentRoot "/home/www/hosts/domain2.com/docs" ServerName domain2.com <Directory /home/www/host/domain2.com/docs allow from all Options +Indexes </Directory> </VirtualHost>
ปัญหาพบว่า พอเรียกเวบในชื่อของ domain2.com จะได้หน้าเวบของ domain1.com ซึ่งทำหน้าที่เป็นเซิร์ฟเวอร์หลักมาขึ้นแทนทั้งหมด
แสดงว่า Web server ที่ต้องการตั้งแบบVirtual Host ไม่ทำงาน
สาเหตุปัญหา
หลังจากได้ลอง และทดสอบจนแน่ใจแล้ว พบว่าปัญหานี้เกิดจาก การเอาconfigไปไว้ ตามคำแนะนำของ Apache2 คือที่ /etc/apache2/site-available/....การแก้ปัญหา
ต้องเอาค่าที่ตั้ง(config) สำหรับการตั้งแบบ virtual hostไปไว้ที่ apache2.conf หรือ httpd.conf ก็ได้ ตำแหน่งไฟล์อยู่ที่นี่/etc/apache2/apache2.confและ แบบดั้งเดิมก็ที่ httpd.conf ตรงตำแหน่ง
/etc/apache2/httpd.confหรือลงเพิ่มได้ทั้ง ๒ ที่ดังข้างบนตามใจชอบ ซึ่งก็เป็นวิธีการตั้ง Subdomain นั่นเอง โดยSubdomain ที่ตั้งต้องไม่ซ้ำกัน โดยแสดงตัวอย่างให้เห็นอย่างชัดเจนว่า
Subdomain พื้นฐานที่ตั้งให้ domain1.com คือ
www.domain1.com กับ domain1.com
Subdomain พื้นฐานที่ตั้งให้ domain2.com คือ
www.domain2.com กับ domain2.com
ถือว่าไม่ซ้ำกัน และจะมีการตั้ง Subdomain ที่ต้องตั้งให้แต่ละโดเมนรวม ๒ แบบ
การตั้งค่าโดเมนตามวิธีนี้ ยังสามารถแก้ปัญหา การเรียกชื่อเว็บที่เรียกได้อย่างใดอย่างหนึ่งด้วย โดยไม่ว่าจะเรียก www.domain.com หรือ domain.com ก็สามารถเรียกได้ครอบคลุมทั้งหมด
จาก
http://wiki.opentle.org/%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B8%AA%E0%B8%9E%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%93%E0%B9%8C%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_VirtualHost_%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2_Apache2
0 comments:
Post a Comment