ปัญหาคือ:
ไซต์แรก firstsite.test ทำงานบน PHP 7.4 ฉันต้องเปิดไซต์ที่สองบน PHP 8.0 และเฟรมเวิร์กอื่นภายในไดเร็กทอรีย่อย: firstsite.test/second-site/
ตอนนี้ฉันมี nginx conf แยกกัน 2 รายการสำหรับแต่ละไซต์และพวกมันทำงานแยกกัน
แต่ฉันไม่สามารถทำให้ไซต์ที่สองแสดงในไดเรกทอรีย่อยของไซต์แรกได้ สิ่งที่ฉันพยายาม:
- สร้างนามแฝงในไซต์แรก conf:
เซิร์ฟเวอร์ {
ฟัง IP:พอร์ต;
รูท /var/www/user/data/www/firstsite/current;
ตำแหน่ง @php {
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
fastcgi_pass ยูนิกซ์:/var/www/php-fpm/1.sock;
fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
try_files $uri =404;
รวม fastcgi_params;
}
ตำแหน่ง ~ ^/ไซต์ที่สอง/ {
นามแฝง /var/www/user/data/www/secondsite/current/public;
add_header X-Frame-ตัวเลือก "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
ดัชนี index.php;
ชุดอักขระ utf-8;
try_files $uri $uri/ /index.php?$query_string;
ตำแหน่ง ~ \.php$ {
fastcgi_pass ยูนิกซ์:/var/www/php-fpm/18.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
รวม fastcgi_params;
}
สถานที่ ~ /\.(?!ที่รู้จักกันดี)* {
ปฏิเสธทั้งหมด
}
}
}
- กำหนดเส้นทางรูท:
เซิร์ฟเวอร์ {
ฟัง IP:พอร์ต;
รูท /var/www/user/data/www/firstsite/current;
ตำแหน่ง @php {
fastcgi_index index.php;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
fastcgi_pass ยูนิกซ์:/var/www/php-fpm/1.sock;
fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
try_files $uri =404;
รวม fastcgi_params;
}
ตำแหน่ง ~ ^/ไซต์ที่สอง/ {
รูท /var/www/user/data/www/secondsite/current/public;
add_header X-Frame-ตัวเลือก "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
ดัชนี index.php;
ชุดอักขระ utf-8;
try_files $uri $uri/ /index.php?$query_string;
ตำแหน่ง ~ \.php$ {
fastcgi_pass ยูนิกซ์:/var/www/php-fpm/18.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
รวม fastcgi_params;
}
สถานที่ ~ /\.(?!ที่รู้จักกันดี)* {
ปฏิเสธทั้งหมด
}
}
}
ไม่มีอะไรทำงานนี้ ได้โปรดชี้ทางที่ถูกต้องให้ฉันที