Dalam aplikasi saya, saya ingin lokasi "/" mengembalikan file index.html statis, saya ingin "/ statis" untuk menyajikan file statis dari folder dan saya ingin semua permintaan lain untuk mengembalikan 404 TIDAK DITEMUKAN. Pada titik selanjutnya saya akan mengarahkan semua permintaan lain ke server WSGI.
Ini adalah konfigurasi saya saat ini:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Folder statis berfungsi dengan baik, tetapi "/" mengembalikan 404 TIDAK DITEMUKAN. Saya juga sudah mencoba:
alias /home/tomas/projects/streamcore/static/index_debug.html;
Di blok lokasi, tetapi itu mengembalikan 500 INTERNAL SERVER ERROR. Sepertinya alias
tidak suka file tunggal. Selain itu saya sudah mencoba:
try_files static/index_debug.html;
Tapi itu menghentikan server dari memulai dengan kesalahan "jumlah argumen yang tidak valid di direct_files directive". Rupanya try_files
sebenarnya mengharuskan Anda untuk mencoba lebih dari satu file, yang bukan perilaku yang saya cari.
Jadi pertanyaan saya adalah: Bagaimana saya mengonfigurasi blok lokasi untuk selalu mengembalikan file statis?
EDIT: Saya sudah melihat dari jawaban lain yang alias
seharusnya menerima satu file sebagai argumen, jadi saya mencoba:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Tapi saya masih hanya mendapat 500 KESALAHAN SERVER INTERNAL. Log kesalahan untuk permintaan "/" mengatakan:
[alert] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" bukan direktori
Mengapa ia mencoba membuka "index_debug.htmlindex.html"? Saya tidak menggunakan index
arahan di mana pun.
sumber
try_files static/index_debug.html static/index_debug.html;
location =/
saya mendapatkan 404 TIDAK DITEMUKAN, denganlocation /
saya mendapatkan 500 KESALAHAN SERVER INTERNAL.location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
Jawaban:
Baru saja menguji ini dan itu berfungsi untuk saya:
File itu
/tmp/root/static/index_debug.html
ada tentu saja :)Saya dapat menekan URL apa saja dan saya hanya mendapatkan halaman statis.
sumber
Anda dapat menggunakan try_files dan mengarahkan ulang ke lokasi yang ditentukan dengan menulis ulang. Seperti ini:
Jika ada file di
/tmp/root
dalamnya akan dilayani, jika tidak uri akan ditulis ulangstatic/index_debug.html
dan akan dilayani.sumber