Saya perlu melayani aplikasi saya melalui server aplikasi saya di 8080
, dan file statis saya dari direktori tanpa menyentuh server aplikasi. Konfigurasi nginx yang saya miliki adalah sesuatu seperti ini ...
# app server on port 8080
# nginx listens on port 8123
server {
listen 8123;
access_log off;
location /static/ {
# root /var/www/app/static/;
alias /var/www/app/static/;
autoindex off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Sekarang, dengan konfigurasi ini, semuanya berfungsi dengan baik. Perhatikan bahwa root
arahan dikomentari.
Jika saya mengaktifkan root
dan menonaktifkan alias
- itu berhenti berfungsi. Namun, ketika saya menghapus trailing /static/
dari root
itu mulai berfungsi lagi.
Dapatkah seseorang menjelaskan apa yang terjadi. Juga tolong jelaskan dengan jelas dan lisan apa perbedaan antara root
dan alias
, dan tujuan mereka.
log_format scripts '$document_root | $uri | > $request';
ke dalamhttp
bagian danaccess_log /var/log/nginx/scripts.log scripts;
ke dalamserver
bagian konfigurasi nginx ..nginx: [emerg] invalid number of arguments in "alias" directive
, dan server turun selama restart.sebagai katakan sebagai @treecoder
Sebuah gambar bernilai ribuan kata
untuk
root
:untuk
alias
:sumber
Dalam kasus Anda, Anda dapat menggunakan
root
arahan, karena$uri
bagian darilocation
arahan itu sama denganroot
bagian arahan terakhir .dan
root
arahan akan ditambahkan$uri
ke jalan.sumber
Hanya tambahan cepat ke jawaban @ good_computer yang sangat membantu, saya ingin mengganti ke root dari URL dengan folder, tetapi hanya jika itu cocok dengan subfolder yang berisi file statis (yang ingin saya pertahankan sebagai bagian dari path).
Misalnya jika file yang diminta ada di
/app/js
atau/app/css
, lihat/app/location/public/[that folder]
.Saya mendapatkan ini untuk bekerja menggunakan regex.
sumber
alias
digunakan untuk mengganti path bagian lokasi (LPP) di jalur permintaan, sementararoot
digunakan untuk ditambahkan ke jalur permintaan.Mereka adalah dua cara untuk memetakan jalur permintaan ke jalur file akhir.
alias
hanya dapat digunakan di blok lokasi, dan itu akan menggantikan bagian luarroot
.alias
danroot
tidak dapat digunakan dalam blok lokasi bersama.sumber
Blok server untuk menjalankan halaman statis di nginx.
sumber
Dengan kata lain tentang menjaga singkat ini: dalam kasus
root
, argumen lokasi yang ditentukan adalah bagian dari jalur filesystem dan URI . Di sisi lain - untukalias
argumen direktif pernyataan lokasi adalah bagian dari URI sajaJadi,
alias
adalah nama yang berbeda yang memetakan URI tertentu ke jalur tertentu di sistem file, sedangkanroot
menambahkan argumen lokasi ke jalur root yang diberikan sebagai argumen untukroot
direktif.sumber