ฉันมีการกำหนดค่าต่อไปนี้สำหรับแอป Angular (JS) โดยที่ laravel (PHP) API สำหรับแอปเดียวกันอยู่ในโฟลเดอร์ 'api':
เซิร์ฟเวอร์ {
ฟัง 80;
server_name example.com www.example.com;
รูท /var/www/html/mydomain.com; #path ไปยังไดเร็กทอรีแบบคงที่
ดัชนี index.html index.htm index.php;
ชุดอักขระ utf-8;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?$args;
}
ที่ตั้ง /api {
นามแฝง /var/www/html/example.com/api/public;
try_files $uri $uri/ @laravelapi;
ตำแหน่ง ~ \.php$ {
รวม fastcgi_params;
fastcgi_pass 127.0.0.1:9072; #set port สำหรับ php-fpm เพื่อฟัง
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
สถานที่ @laravelapi {
เขียนใหม่ /api/(.*)?$ /api/index.php?$is_args$args สุดท้าย;
}
สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
ตำแหน่ง = /robots.txt { access_log off; ปิด log_not_found; }
error_page 404 /index.php;
สถานที่ ~ /\.(?!เป็นที่รู้จัก).* {
ปฏิเสธทั้งหมด
}
}
เว็บ (JS) ใช้งานได้ดี แต่การเรียกใช้ API ทั้งหมด เช่น: http://www.example.com/api/public/pokemons
ล้มเหลวด้วยข้อความ "ไม่พบไฟล์" ตรวจสอบไฟล์ error_log ของ nginx:
2022/03/18 12:08:47 [ข้อผิดพลาด] 8028#8028: *26642 FastCGI ส่งใน stderr: "ไม่ทราบสคริปต์หลัก" ขณะอ่านส่วนหัวการตอบสนองจากอัปสตรีม ไคลเอนต์: 198.41.242.154 เซิร์ฟเวอร์: example.com, /127.0 .0.1:9072", โฮสต์: "www.example.com"
ไม่แน่ใจว่าเหตุใดจึงเกิดปัญหา ฉันมีเว็บไซต์อื่นที่ทำงานบนการกำหนดค่า PHP FPM เดียวกันและทำงานได้ดี
มีความคิดอะไรที่ฉันหายไป?