Làm cách nào để đặt favicon.ico cho Máy chủ ảo cụ thể trên Nginx?


26

Tôi đang sử dụng Nginx làm máy chủ web của mình lần đầu tiên. Tôi không gặp khó khăn gì để thiết lập nó và mọi thứ hoạt động rất tốt. Vấn đề xảy ra khi nhà thiết kế hỏi tôi rằng anh ta có thể gửi cho tôi "biểu tượng trong thanh tiêu đề" để "đặt nó lên đó không".

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

Thư mục của tôi:

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

Có thể đặt một favicon.ico cụ thể cho mỗi Máy chủ ảo không? Bạn nên đặt tập tin đó ở đâu và làm thế nào bạn có thể cấu hình nó?

CHỈNH SỬA:

Tôi chỉ nhận ra rằng đó là một vấn đề hoàn toàn khác. Cả hai câu trả lời đều đúng nhưng vấn đề của tôi là sự cho phép. Tôi không biết tại sao tệp favicon.ico cuối cùng lại có quyền 600 và tất nhiên ngay lúc đó tôi đã làm:

chmod +r favicon.ico

Làm việc như người ở. Tôi sẽ để nó ở đây nếu nó xảy ra với người khác.


Quyền 600 có thể liên quan đến ô (ví dụ: ô cho người dùng đó được đặt thành 077 chẳng hạn).
jcisio

Vấn đề quyền đã sửa nó cho tôi là tốt!
Kzqai

Vấn đề cấp phép ở đây là tốt. Có thể do tạo tệp ico bằng cách tải png lên trang web.
Aaron Storck

Câu trả lời:


14

favicon.icotập tin nên được đặt trong thư mục gốc của trang web được xác định bởi lệnh nginx root. Hoặc bạn có thể chuyển URL sang favicon bằng cách sử dụng mã sau trong HTML:

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


Tôi có tệp favicon.ico của tôi ở đó ... vẫn không hoạt động
ersamy

1
Kiểm tra grep favicon.ico nginx-{access,error}.logvà kiểm tra đầu ra từ file favicon.ico- IE không hiểu gì ngoài định dạng ICO. Ngoài ra, cấu hình của bạn chỉ hiển thị một Virtualhost.
AlexD

1
tốt với php crap, không tốt với thiết lập tệp tĩnh
holms

55

Đây là cách chúng tôi thực hiện trong cấu hình vhost cụ thể ( sites-available/[vhostconfigfile]) theo chỉ thị của máy chủ:

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

Bằng cách đó bạn có thể đặt nó ở bất cứ đâu bạn muốn mà không cần bất kỳ html nào.

".X." hoàn toàn không bắt buộc và chỉ biểu thị rằng bạn có thể thay đổi tên tệp này thành bất cứ điều gì bạn thích. Tôi chỉ đơn giản sử dụng ".X." như một trình giữ chỗ để xác định tên miền phụ cụ thể mà tôi đang tham khảo. Nó hoàn toàn cho tổ chức.


Điều này là hoàn hảo cho tình huống của tôi. Tôi có một chỉ mục đơn giản với các liên kết đến Webmin và phpVirtualBox cho máy chủ của tôi và tôi muốn cả 3 có cùng một favicon tùy chỉnh.
RyanScottLewis

tại sao bạn cần =ở đó
thánh

4
= Có thể không bắt buộc , nhưng nó có thể là một tốc độ khiêm tốn và là chính xác. Xem các tài liệu: nginx.org/en/docs/http/ngx_http_core_module.html#location
Scott Stafford

Đầu tiên, có cần phải có .Xtrong /var/www/media/images/favicon.X.ico? Thứ hai, tôi đã thử giải pháp này chính xác như đã đăng, vẫn không hoạt động. Có lẽ điều này không làm việc với auto_index on;? Có lẽ nó yêu cầu khuyến nghị @AlexD.
JamesThomasMoon1979

Bạn đã đúng, '.X' là không bắt buộc. Chúng tôi chỉ có nhiều favicon nằm trong cùng một thư mục cho các trang web khác nhau mà chúng tôi chạy, vì vậy đây là cách chúng tôi đặt tên cho chúng là duy nhất. Nó phải là tên tệp chính xác cho tệp bạn muốn dùng làm 'favicon.ico'. Lệnh tôi liệt kê ở trên cho phép đặt tên tệp thực tế tùy ý trong khi cho phép máy chủ web cung cấp tên tệp chính xác 'favicon.ico' cho trình duyệt của máy khách.
eficker

0

Điều này có nghĩa là, bất cứ nơi nào các tệp của máy chủ ảo được lấy từ (thư mục gốc), bạn nên đặt tệp favicon.ico cụ thể đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.