Trong ứng dụng của mình, tôi muốn vị trí "/" trả về tệp index.html tĩnh, tôi muốn "/ static" phục vụ các tệp tĩnh từ một thư mục và tôi muốn tất cả các yêu cầu khác trả về 404 KHÔNG TÌM KIẾM. Sau đó, tôi sẽ chuyển hướng tất cả các yêu cầu khác đến máy chủ WSGI.
Đây hiện là cấu hình của tôi:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Thư mục tĩnh đang hoạt động hoàn hảo, nhưng "/" đang trả về 404 KHÔNG TÌM KIẾM. Tôi cũng đã thử:
alias /home/tomas/projects/streamcore/static/index_debug.html;
Trong khối vị trí, nhưng trả về 500 L ERI MÁY CHỦ NỘI BỘ. Có vẻ như alias
không thích các tập tin đơn lẻ. Ngoài ra, tôi đã thử:
try_files static/index_debug.html;
Nhưng điều đó ngăn máy chủ bắt đầu với lỗi "số lượng đối số không hợp lệ trong chỉ thị try_files". Rõ ràng try_files
thực sự đòi hỏi bạn phải thử nhiều hơn một tệp, đó không phải là hành vi tôi đang tìm kiếm.
Vì vậy, câu hỏi của tôi là: Làm thế nào để tôi định cấu hình một khối vị trí để luôn trả về một tệp tĩnh?
EDIT: Tôi đã thấy từ các câu trả lời khác alias
thực sự nên chấp nhận một tệp duy nhất làm đối số, vì vậy tôi đã thử:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Nhưng tôi vẫn chỉ nhận được 500 LỚP MÁY CHỦ NỘI BỘ. Nhật ký lỗi cho yêu cầu "/" cho biết:
[alert] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" không phải là một thư mục
Tại sao nó lại cố mở "index_debug.htmlindex.html"? Tôi không sử dụng index
chỉ thị ở bất cứ đâu.
location =/
Tôi nhận 404 KHÔNG TÌM KIẾM, với location /
tôi nhận được 500 L ERI MÁY CHỦ NỘI BỘ.
location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
try_files static/index_debug.html static/index_debug.html;