ฉันใช้ nginx รุ่น windows อย่างเป็นทางการ ฉันต้องการระบุ windows ที่เทียบเท่ากับการกำหนดค่านี้
location /static/ {
alias /home/user/staticfiles/;
}
ฉันจะระบุพา ธ ของไฟล์ windows ในคำสั่ง alias ได้อย่างไร เป็นไปได้ไหม
ฉันใช้ nginx รุ่น windows อย่างเป็นทางการ ฉันต้องการระบุ windows ที่เทียบเท่ากับการกำหนดค่านี้
location /static/ {
alias /home/user/staticfiles/;
}
ฉันจะระบุพา ธ ของไฟล์ windows ในคำสั่ง alias ได้อย่างไร เป็นไปได้ไหม
คำตอบ:
คำตอบเหล่านี้ต้องล้าสมัย การใช้พา ธ สัมบูรณ์ nginx 1.3.8 พร้อมเครื่องหมายสแลช แบ็กสแลชดูเหมือนจะใช้งานได้ แต่ควรเพิ่มเป็นสองเท่า หากพวกเขาไม่ได้บางอย่างเช่นต่อท้าย\"
จะถูกนำตัวอักษร
location /static/ {
# alias "C:\\foo\\bar\\...\\static\\";
alias "C:/foo/bar/.../static/";
expires 90d;
}
อาจไม่จำเป็นต้องใส่เครื่องหมายคำพูด แต่ดูเหมือนว่าเป็นความคิดที่ดีในกรณีที่มีช่องว่างในตัว
อีกสิ่งหนึ่งที่ฉันสังเกตเห็นคือสิ่งสำคัญคือการจับคู่ URL และเส้นทางของนามแฝงเกี่ยวกับการลงท้ายด้วยเครื่องหมายทับหรือไม่ - ไม่ตรงกันและไม่ทำงาน
หากคุณพยายามระบุพา ธ สัมบูรณ์เช่น ...
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.conf
สถานที่ / คงที่ / {นามแฝง / nginx / html / staticfiles /; }
ดูเหมือนว่านามแฝงไม่ทำงานเลยสำหรับระบบ windows ของฉัน ฉันพยายามพิมพ์
alias "c:"
แต่สิ่งนี้ก็ใช้ไม่ได้ และฉันไม่สามารถหาวิธีที่จะส่งออกตำแหน่งหลังจากไฟล์ config ถูกโหลดใหม่โดย nginx ดังนั้นอย่าใช้นามแฝงใน windows สำหรับ nginx
alias ../../cde/folder;
สมมติว่า nginx.exe ของคุณหาตำแหน่งที่ตั้งที่ d: / abc / nginx แต่โฟลเดอร์ที่คุณพยายามตั้งชื่อแทนอยู่ที่ d: / cde / โฟลเดอร์ บางแหล่งกล่าวถึงว่า nginx นั้นฮาร์ดโค้ดด้วยพา ธ/cygdrive/c/nginx/
ซึ่งalias /cygdrive/d/path/
ควรใช้ แต่กรณีนี้ไม่ได้ผลสำหรับฉัน นอกจากนี้ยังควรกล่าวถึงว่าการเฉือนไปข้างหน้าในตอนท้ายของเส้นทางนามแฝงไม่ควรถูกละเลย
สำหรับ Nginx บน windows คุณต้องใช้วิธีนี้:
สถานที่ตั้ง / foo {
รูต C: // pathtoyourfile / folder1 / folder2;
} โดยที่ foo เป็นโฟลเดอร์จริงภายใน folder2