วิธีการตั้งค่า favicon.ico สำหรับโฮสต์เสมือนเฉพาะบน Nginx


26

ฉันใช้ Nginx เป็นเว็บเซิร์ฟเวอร์เป็นครั้งแรก ฉันไม่มีปัญหาในการตั้งค่าและทุกอย่างใช้งานได้ดี ปัญหาเกิดขึ้นเมื่อผู้ออกแบบถามฉันว่าเขาสามารถส่ง "ไอคอนในแถบชื่อเรื่อง" ถึง "วางไว้ที่นั่นหรือไม่"

# /opt/nginx/conf/nginx.conf
...
server {
    listen 80 ;
    server_name *.website.com website.com;
    root /home/webuser/sites/website;
}

ไดเรกทอรีของฉัน:

/home/webuser/sites/website/
|_ index.html
|_ main.css
|_ favicon.ico

เป็นไปได้หรือไม่ที่จะนำ favicon.ico ไปยังแต่ละโฮสต์เสมือน? คุณควรวางไฟล์นั้นไว้ที่ไหนและจะกำหนดค่าอย่างไร?

แก้ไข:

ฉันเพิ่งรู้ว่ามันเป็นปัญหาที่แตกต่างอย่างสิ้นเชิง คำตอบทั้งสองถูกต้อง แต่ปัญหาของฉันคือการอนุญาต ฉันไม่รู้ว่าทำไมไฟล์ favicon.ico จึงมีสิทธิ์ 600 และแน่นอนตอนที่ฉันทำ:

chmod +r favicon.ico

ทำงานเหมือนจับใจ ฉันจะออกจากที่นี่ถ้ามันเกิดขึ้นกับคนอื่น


สิทธิ์ 600 อาจเกี่ยวข้องกับ umask (umask สำหรับผู้ใช้นั้นถูกตั้งค่าเป็น 077 เป็นต้น)
jcisio

ปัญหาการอนุญาตแก้ไขสำหรับฉันเช่นกัน!
Kzqai

ปัญหาการอนุญาตที่นี่เช่นกัน อาจเกิดจากการสร้างไฟล์ ico โดยการอัพโหลด png ไปยังเว็บไซต์
Aaron Storck

คำตอบ:


14

favicon.icoไฟล์ควรอยู่ในไดเรกทอรีรากของเว็บไซต์ซึ่งกำหนดโดยrootคำสั่งnginx หรือคุณสามารถส่ง URL ไปยัง favicon โดยใช้รหัสต่อไปนี้ใน HTML:

<link rel="shortcut icon" href="http://example.com/myicon.ico" />


ฉันมีไฟล์ favicon.ico ของฉันอยู่ในนั้น ... ยังไม่ทำงาน
ersamy

1
ตรวจสอบgrep favicon.ico nginx-{access,error}.logและตรวจสอบผลลัพธ์จากfile favicon.ico- IE ไม่เข้าใจอะไรเลยนอกจากรูปแบบ ICO นอกจากนี้คุณกำหนดค่าแสดง VirtualHost เดียวเท่านั้น
AlexD

1
ที่ดีกับอึ PHP, ไม่ดีกับไฟล์ติดตั้งแบบคงที่
Holms

55

นี่คือวิธีที่เราทำใน vhost config ( sites-available/[vhostconfigfile]) เฉพาะของเราภายใต้คำสั่งเซิร์ฟเวอร์:

location = /favicon.ico {
    alias /var/www/media/images/favicon.X.ico;
}

ด้วยวิธีนี้คุณสามารถวางได้ทุกที่ที่คุณต้องการโดยไม่มี html ใด ๆ

".X." ไม่จำเป็นเลยและแสดงว่าคุณสามารถเปลี่ยนชื่อไฟล์นี้เป็นอะไรก็ได้ที่คุณต้องการ ฉันแค่ใช้ ".X" เป็นตัวยึดตำแหน่งเพื่อระบุโดเมนย่อยเฉพาะที่ฉันกำลังอ้างอิง มันหมดจดสำหรับองค์กร


นี่เหมาะสำหรับสถานการณ์ของฉัน ฉันมี index.htm แบบง่ายพร้อมลิงก์ไปยัง Webmin และ phpVirtualBox สำหรับเซิร์ฟเวอร์ของฉันและฉันต้องการให้ทั้ง 3 คนมี favicon ที่กำหนดเองเหมือนกัน
RyanScottLewis

ทำไมคุณต้องการที่=นั่น?
holms

4
อาจไม่จำเป็นต้อง = แต่อาจเป็นการเร่งความเร็วเล็กน้อยและถูกต้อง ดูเอกสาร: nginx.org/en/docs/http/ngx_http_core_module.html#location
Scott Stafford

ก่อนมีความจำเป็น.Xใน/var/www/media/images/favicon.X.icoหรือไม่ ประการที่สองฉันลองใช้วิธีนี้เหมือนที่โพสต์ แต่ยังใช้งานไม่ได้ บางทีนี่อาจใช้ไม่ได้กับauto_index on;? อาจต้องใช้คำแนะนำ @AlexD
JamesThomasMoon1979

คุณถูกต้องไม่จำเป็นต้องใช้ '.X' เรามี favicons จำนวนมากที่อยู่ในโฟลเดอร์เดียวกันสำหรับเว็บไซต์ต่าง ๆ ที่เราใช้งานดังนั้นนี่คือวิธีที่เราตั้งชื่อพวกเขาโดยเฉพาะ ควรเป็นชื่อไฟล์ที่แน่นอนสำหรับไฟล์ที่คุณต้องการใช้เป็น 'favicon.ico' รายการ directive I ด้านบนอนุญาตให้ตั้งชื่อไฟล์ตามจริงโดยไม่ได้ตั้งใจขณะที่อนุญาตให้เว็บเซิร์ฟเวอร์ให้บริการชื่อไฟล์ที่ถูกต้อง 'favicon.ico' ไปยังเบราว์เซอร์ของลูกค้า
eficker

0

ซึ่งหมายความว่าไม่ว่าไฟล์ของโฮสต์เสมือนจะถูกนำมาจากที่ใด (ไดเรกทอรีราก) คุณควรวางไฟล์ favicon.ico นั้น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.