ฉันจะระบุพา ธ ของไฟล์ Windows ใน nginx ได้อย่างไร


22

ฉันใช้ nginx รุ่น windows อย่างเป็นทางการ ฉันต้องการระบุ windows ที่เทียบเท่ากับการกำหนดค่านี้

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

ฉันจะระบุพา ธ ของไฟล์ windows ในคำสั่ง alias ได้อย่างไร เป็นไปได้ไหม

คำตอบ:


17

คำตอบเหล่านี้ต้องล้าสมัย การใช้พา ธ สัมบูรณ์ nginx 1.3.8 พร้อมเครื่องหมายสแลช แบ็กสแลชดูเหมือนจะใช้งานได้ แต่ควรเพิ่มเป็นสองเท่า หากพวกเขาไม่ได้บางอย่างเช่นต่อท้าย\"จะถูกนำตัวอักษร

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

อาจไม่จำเป็นต้องใส่เครื่องหมายคำพูด แต่ดูเหมือนว่าเป็นความคิดที่ดีในกรณีที่มีช่องว่างในตัว

อีกสิ่งหนึ่งที่ฉันสังเกตเห็นคือสิ่งสำคัญคือการจับคู่ URL และเส้นทางของนามแฝงเกี่ยวกับการลงท้ายด้วยเครื่องหมายทับหรือไม่ - ไม่ตรงกันและไม่ทำงาน


ยังคงใช้งานได้ใน nginx 1.8.1
Daniel

คำแนะนำในการใช้เครื่องหมายคำพูดเพื่อจัดการช่องว่างช่วยฉันได้มาก!
เอาชนะ

5

หากคุณพยายามระบุพา ธ สัมบูรณ์เช่น ...

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

... จากนั้นเมื่อขอไฟล์จากตำแหน่งนั้นคุณอาจเห็นข้อผิดพลาดใน C: \ nginx \ logs \ error.log เช่น:

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

เมื่อกำหนดค่า nginx บน Windows ให้ระบุพา ธ ใด ๆ ที่สัมพันธ์กับไดเรกทอรี C: \ nginx งานนี้:

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

โดยส่วนตัวแล้วฉันมีความสุขที่ได้เรียนรู้สิ่งนี้เพราะมันทำให้การกำหนดค่า nginx ของฉันพกพาได้เล็กน้อยระหว่าง Windows และ Linux มากกว่าที่ฉันคาดไว้ หากต้องการเปลี่ยนไฟล์การกำหนดค่า Linux เป็นไฟล์ที่ใช้งานได้บน Windows สำหรับฉันมันเป็นเพียง:

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

ใช้งานได้กับ nginx 1.9.10 ขอบคุณ!
NenadP

2

คุณสามารถลองสิ่งนี้:

  1. คัดลอกไฟล์คงที่ของคุณลงใน nginx / html / staticfiles
  2. ตั้งค่าเป็น nginx.conf

    สถานที่ / คงที่ / {นามแฝง / nginx / html / staticfiles /; }


1

ดูเหมือนว่านามแฝงไม่ทำงานเลยสำหรับระบบ windows ของฉัน ฉันพยายามพิมพ์

alias "c:"

แต่สิ่งนี้ก็ใช้ไม่ได้ และฉันไม่สามารถหาวิธีที่จะส่งออกตำแหน่งหลังจากไฟล์ config ถูกโหลดใหม่โดย nginx ดังนั้นอย่าใช้นามแฝงใน windows สำหรับ nginx


สำหรับ nginx 1.5.6 การตั้งค่าต่อไปนี้ใช้งานได้: alias ../../cde/folder;สมมติว่า nginx.exe ของคุณหาตำแหน่งที่ตั้งที่ d: / abc / nginx แต่โฟลเดอร์ที่คุณพยายามตั้งชื่อแทนอยู่ที่ d: / cde / โฟลเดอร์ บางแหล่งกล่าวถึงว่า nginx นั้นฮาร์ดโค้ดด้วยพา ธ/cygdrive/c/nginx/ซึ่งalias /cygdrive/d/path/ควรใช้ แต่กรณีนี้ไม่ได้ผลสำหรับฉัน นอกจากนี้ยังควรกล่าวถึงว่าการเฉือนไปข้างหน้าในตอนท้ายของเส้นทางนามแฝงไม่ควรถูกละเลย
TonyTony

ฉันพยายามที่จะย้าย nginx.conf จาก linux ไปยัง win10 ไฟล์เรียกทำงาน nginx อยู่ใน C: \ nginx ในขณะที่ไฟล์ที่ให้บริการอยู่ใน D: / bellaria_web / haus บริบท 'รูต D: / bellaria_web / haus /;' ดูเหมือนจะไม่ทำงาน ใครสามารถอธิบายสิ่งที่ผิดหรือเปล่า?
aag

0

สำหรับ Nginx บน windows คุณต้องใช้วิธีนี้:

สถานที่ตั้ง / foo {

รูต C: // pathtoyourfile / folder1 / folder2;

} โดยที่ foo เป็นโฟลเดอร์จริงภายใน folder2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.