2013-03-16 81 views
14

Tôi đang gặp nhiều sự cố khi thiết lập bí danh này bên trong nginx để hiển thị trang web của tôi một cách chính xác.cách phân phối tệp html trong nginx mà không hiển thị tiện ích mở rộng trong thiết lập bí danh này

Trang web tôi quan tâm có thể truy cập được từ mywebsite.com/mr và khác với trang web đặt tại mywebsite.com/. Trang web được đặt tại /fullpath (được rút gọn để đơn giản) Trang web cần phân phối ba loại nội dung:

  1. Tệp chỉ mục nằm ở /fullpath/index.html.
  2. Các tệp html khác (không hiển thị tiện ích mở rộng .html trong trình duyệt).
  3. Nội dung tĩnh (js/css/img) nằm ở /fullpath và các thư mục con.

tôi đã cố gắng thay đổi xung quanh thứ tự các trận đấu trong try_files và tìm thấy tình huống mà tất cả họ đều làm việc, chỉ cần không cùng một lúc:

location /mr { 
    default_type "text/html"; 
    alias /fullpath; 

    # with this one 1 and 3 work 
    # try_files $uri/index.html $uri.html $uri; 

    # with this one 2 and 3 work 
    # try_files $uri $uri.html $uri/index.html; 

    # with this one 1 and 2 work 
    try_files $uri.html $uri/index.html $uri; 
} 

Khi một người không làm việc nó 404 của. Có ai biết làm thế nào tôi có thể phục vụ tất cả các loại tập tin một cách chính xác?

Trả lời

19

Hình như bí danh và try_files don't work together. Tuy nhiên, tôi không nghĩ bạn cần sử dụng bí danh.

location /mr { 
    default_type "text/html"; 
    try_files /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html /fullpath/index.html; 
} 

nào sẽ cố gắng:

  • tập tin chính xác.
  • Tệp có thêm .html.
  • Chỉ mục trong đường dẫn.
  • Chỉ mục mặc định.

Tôi nghĩ rằng chỉ thị gốc không hoạt động với các tệp thử nhưng không thể kiểm tra.

server{ 
    location /mr { 

     root /home/mysite/fullpath; 

     default_type "text/html"; 
     try_files $uri $uri.html $uri/index.html index.html; 
    } 
} 
5

tôi đã sử dụng một sự kết hợp của những gì @Danack posted đó dẫn tôi đến kết quả tôi đang tìm kiếm (phục vụ các tập tin html trực tiếp):

location /health-check { 
    default_type "text/html"; 
    alias /path/to/my/file.html; 
} 
+1

Cảm ơn bạn. Hoạt động hoàn hảo. –