Score:0

NGINX - ย้อนกลับพร็อกซี แต่โฟลเดอร์ย่อยหนึ่งโฟลเดอร์ไปยังไดเรกทอรีในเครื่องแบบคงที่

ธง mt

ฉันมีปัญหาในการหาไวยากรณ์พื้นฐานสำหรับการพร็อกซีการรับส่งข้อมูลส่วนใหญ่ไปยังการติดตั้ง Solr ในเครื่อง แต่ทิ้งคำขอพาธ/dir หนึ่งรายการที่ส่งไปยังไดเร็กทอรี html แบบคงที่ ต้องตั้งค่าตำแหน่งทุติยภูมิ ตติยภูมิ ฯลฯ ทั้งหมดด้วย regex หรือไม่ ไม่สามารถหาคำแนะนำง่ายๆเกี่ยวกับเรื่องนี้ได้

ข้อผิดพลาดปัจจุบัน: /adv/index.html - 404 - ไม่พบ /adv/ - 403 ต้องห้าม /solr/ - ทำงานได้ดี

นี่คือการกำหนดค่าของฉัน:

ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
#include /etc/nginx/modules-enabled/*.conf;

เหตุการณ์ {
        worker_connections 1024;
        เปิด multi_accept;
}

http {
        ส่งไฟล์บน;
        tcp_nopush บน;
        tcp_nodelay บน;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        ดัชนี index.html;

        รวม /etc/nginx/mime.types;
        แอปพลิเคชัน default_type/octet-stream;
        เซิร์ฟเวอร์ {
                ฟัง 80;

                ที่ตั้ง / {
                    proxy_pass http://localhost:8983;
                }

                ตำแหน่ง /adv/ {
                        # ยังไม่แน่ใจว่าต้องมีการอนุญาตอะไรที่นี่
                        # ตั้งค่าโฟลเดอร์ adv และไฟล์ซ้ำภายใน 777
                        นามแฝง /var/www/adv;
                }
        }
}
Richard Smith avatar
jp flag
ตรวจสอบบันทึกข้อผิดพลาด แต่ลอง `root /var/www;` แทน `alias /var/www/adv;`
Ivan Shatsky avatar
gr flag
@Tyndall เมื่อคุณใช้คำสั่ง `alias` ภายในสถานที่ คุณต้องใช้เครื่องหมายทับอย่างระมัดระวังการกำหนดค่าของคุณจะแทนที่คำนำหน้า `/adv/` ของ URI ของคุณด้วย `/var/www/adv` ส่งผลให้ชื่อไฟล์ไม่ถูกต้อง [ที่นี่](https://stackoverflow.com/a/69296739/7121513)คือคำอธิบายโดยละเอียดพร้อมตัวอย่าง
mt flag
แปลก. จากบันทึก ดูเหมือนว่าคำขอของฉันพยายามไปที่ /adv/adv/index.html เมื่อฉันใช้ root และ /advindex.html เมื่อฉันใช้นามแฝง
mt flag
ถ้าฉันพยายามใช้รูทและลบ adv ออกจากพาธ (ให้มันเพิ่มตัวเองจาก url ที่ฉันผ่าน) มันใช้ได้กับทุกอย่างยกเว้น /adv เกือบจะเหมือนไม่รู้จักไดเร็กทอรีและให้บริการ index.html ของฉัน ไฟล์. (/adv/ ทำงาน และ /adv/index.html ทำงาน)
Ivan Shatsky avatar
gr flag
@Tyndall นี่เป็นพฤติกรรมที่คาดหวัง คุณสามารถบังคับให้เปลี่ยนเส้นทางโดยใช้บางอย่าง เช่น `location = /adv { return 301 /adv/; }`. ใช้ `root /var/www` หรือ `alias /var/www/adv/` ภายใน `location /adv/ { ... }` แต่ห้ามใช้ `alias /var/www/adv` การใช้ `root /var/www/` จะไม่ส่งผลเสียดังกล่าว เนื่องจากจะทำให้เส้นทางไฟล์ `/var/www//adv/index.html` ใช้งานได้เช่นกัน
Ivan Shatsky avatar
gr flag
@Tyndall หรือคุณสามารถใช้ `location /adv { root /var/www; }` หรือ `ตำแหน่ง /adv { นามแฝง /var/www/adv; }` อย่างไรก็ตาม มันจะแซง URI คำขอใดๆ ที่ขึ้นต้นด้วย `/adv` เช่น `/advance` เช่นกัน
mt flag
ขอบคุณทุกคน ดังนั้นวิธีแก้ปัญหาที่ดูเหมือนว่าจะได้ผลสำหรับฉัน มาจากความคิดเห็นแรกของ Ivan (และ Richard) เป็นนามแฝงที่ไม่มีเครื่องหมายทับบนเส้นทางตำแหน่งหรือเส้นทางนามแฝง สิ่งที่แปลกคือ ... เมื่อฉันพิมพ์ /adv โดยไม่มีเครื่องหมายทับ ฉันคิดว่าฉันถูกเปลี่ยนเส้นทางไปยังเวอร์ชันของ url ที่มีเครื่องหมายทับท้าย เป็นเรื่องปกติที่ Nginx จะทำเช่นนี้หรือไม่?
Ivan Shatsky avatar
gr flag
@Tyndall ฉันคิดว่ามันเป็นเรื่องปกติสำหรับทุกเว็บเซิร์ฟเวอร์เนื่องจาก `adv` เป็นไดเร็กทอรีไม่ใช่ไฟล์ คุณกำลังดูดัชนีภายในไดเร็กทอรี `adv` คิดว่ามันเหมือนเป็นระบบไฟล์
mt flag
ควรเพิ่มสิ่งนี้เป็นคำตอบเพื่อรับเครดิต ขอบคุณอีกครั้ง.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา