Bagaimana cara menentukan jalur file Windows di nginx


22

Saya menggunakan versi windows resmi nginx. Saya ingin menentukan jendela yang setara dengan konfigurasi ini

location /static/ {
   alias /home/user/staticfiles/;
}

Bagaimana cara menentukan jalur file windows di directive alias? Apakah ini mungkin?

Jawaban:


17

Jawaban ini harus kedaluwarsa. Menggunakan nginx 1.3.8 jalur absolut dengan garis miring maju berfungsi. Backslash tampaknya bekerja, tetapi harus digandakan. Jika tidak maka beberapa, seperti trailing \"diambil secara harfiah.

location /static/ {
    # alias "C:\\foo\\bar\\...\\static\\";
    alias "C:/foo/bar/.../static/";
    expires 90d;
}

Kutipan mungkin tidak diperlukan, tetapi mereka sepertinya ide yang bagus untuk ruang yang tersemat.

Satu hal lain yang saya perhatikan adalah penting untuk mencocokkan url dan alias path tentang diakhiri dengan garis miring atau tidak - ketidakcocokan dan tidak berhasil.


Masih berfungsi di nginx 1.8.1
Daniel

Saran Anda untuk menggunakan tanda kutip untuk menangani spasi putih membantu saya banyak!
Kalahkan

5

Jika Anda mencoba menentukan jalur absolut seperti ...

location / {
    alias C:\Users\SomeUser\mysite\static;
}

... lalu setelah meminta file dari lokasi itu, Anda mungkin akan melihat kesalahan di C: \ nginx \ logs \ error.log seperti:

2011/11/11 12:53:16 [error] 6236#0: *1 open() "/cygdrive/c/nginx/C:\Users\SomeUser\mysite\static\somefile.css

Saat mengkonfigurasi nginx di Windows, tentukan setiap jalur relatif ke direktori C: \ nginx. Ini bekerja:

location / {
    alias ../Users/SomeUser/mysite/static;
}

Secara pribadi, saya senang mempelajari ini karena membuat konfigurasi nginx saya sedikit lebih portabel antara Windows dan Linux daripada yang saya harapkan. Untuk mengubah file konfigurasi Linux menjadi yang berfungsi pada Windows, bagi saya itu pada dasarnya hanya:

s|/home/myname/|../Users/Myname|

Ini bekerja dengan nginx 1.9.10, Terima kasih!
NenadP

2

Anda dapat mencoba ini:

  1. salin file statis Anda ke nginx / html / staticfiles
  2. atur menjadi nginx.conf

    lokasi / static / {alias / nginx / html / staticfiles /; }


1

Sepertinya alias tidak berfungsi sama sekali untuk sistem windows saya. Saya mencoba mengetik

alias "c:"

tetapi bahkan ini tidak berhasil. Dan saya tidak dapat menemukan cara untuk menampilkan lokasi setelah file konfigurasi dimuat ulang oleh nginx. Jadi sederhananya jangan gunakan alias di windows untuk nginx.


Untuk nginx 1.5.6, pengaturan berikut berfungsi alias ../../cde/folder;:, anggap lokasi nginx.exe Anda di d: / abc / nginx, tetapi folder yang Anda coba alias letakkan di d: / cde / folder. Beberapa sumber menyebutkan bahwa nginx telah dikodekan dengan path /cygdrive/c/nginx/, dalam hal ini alias /cygdrive/d/path/harus digunakan, tetapi ini tidak bekerja untuk saya. Juga layak untuk menyebutkan bahwa garis miring di akhir jalur alias tidak boleh diabaikan.
TonyTony

Saya mencoba memigrasi nginx.conf dari linux ke win10. File executable nginx ada di C: \ nginx, sedangkan file yang disajikan ada di D: / bellaria_web / haus. Konteks 'root D: / bellaria_web / haus /;' sepertinya tidak berfungsi. Adakah yang bisa menjelaskan apa yang salah?
aag

0

Untuk Nginx di windows Anda harus menggunakan metode ini:

lokasi / foo {

root C: // pathtoyourfile / folder1 / folder2;

} di mana foo adalah folder aktual di dalam folder2

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.