ฉันมี nginx ที่มี 3 พูลสำหรับ php7.4-fpm - หนึ่งรายการต่อผู้ใช้ 3 คนในระบบเนื่องจากมีแอปและไฟล์ของตนเอง การตั้งค่าของทั้ง 3 นั้นเหมือนกันทุกประการ แต่อันที่เพิ่มเข้ามาล่าสุดมีปัญหาเรื่องการอนุญาต
เบราว์เซอร์ส่งคืนข้อผิดพลาด 404 - ไม่พบ
ข้อผิดพลาดส่งคืนในบันทึก nginx:
2022/01/18 09:32:16 [crit] 504237#504237: *5120 stat()
"/var/www/user3/websites/site.com/index.php" ล้มเหลว (13: การอนุญาต
ถูกปฏิเสธ), ลูกค้า: XXX.XXX.XXX.XXX, เซิร์ฟเวอร์: site.com, คำขอ: "GET /
HTTP/2.0", โฮสต์: "site.com"
sudo -u user3 สถิติ /var/www/user3/websites/site.com/index.php
ผลตอบแทน
ไฟล์: /var/www/user3/websites/site.com/index.php
ขนาด: 405 Blocks: 8 IO Block: 4096 ไฟล์ปกติ
อุปกรณ์: 807h/2055d ไอโหนด: 1441895 ลิงก์: 1
การเข้าถึง: (0644/-rw-r--r--) Uid: ( 1003/ user3) Gid: ( 1003/ user3)
เข้าถึง: 2022-01-17 20:32:08.081267396 +0000
แก้ไข: 26-2020-04 21:46:41.000000000 +0000
เปลี่ยนแปลง: 2022-01-18 09:35:09.129994390 +0000
การกำหนดค่าพูล:
[php7.4-user3]
ผู้ใช้ = ผู้ใช้3
กลุ่ม = ผู้ใช้3
ฟัง = 127.0.0.1:9003
ฟัง เจ้าของ = ไม่มีใคร
Listen.group = ไม่มีใคร
Listen.allowed_clients = 127.0.0.1
pm = ออนดีมานด์
pm.max_children = 24
pm.start_servers = 16
pm.min_spare_servers = 6
pm.max_spare_servers = 24
pm.process_idle_timeout = 900 วินาที
pm.max_requests = 55
php_admin_value[error_log] = /var/log/fpm-php7.4.log
php_admin_flag[log_errors] = เปิด
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
พูลอื่นๆ ค่อนข้างเหมือนกัน ยกเว้นชื่อพูล ผู้ใช้และกลุ่มคือ user1, user2 และพอร์ตการฟังจะแตกต่างกัน เช่น 9001, 9002, 9003 ดังนั้น x ในการกำหนดค่า
การกำหนดค่าโฮสต์เสมือน
เซิร์ฟเวอร์ {
server_name site.com www.site.com;
access_log /var/log/nginx/site.com.access.log;
error_log /var/log/nginx/site.com.error.log;
รูท /var/www/user3/websites/site.com;
ดัชนี index.php index.html index.htm;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?$args;
}
ตำแหน่ง ~ \.php$ {
try_files $uri =404;
รวม fastcgi_params;
fastcgi_pass 127.0.0.1:9003;
}
ฟัง 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
รวม /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
เซิร์ฟเวอร์ {
ถ้า ($host = www.site.com) {
ส่งคืน 301 https://$host$request_uri;
}
ถ้า ($host = site.com) {
ส่งคืน 301 https://$host$request_uri;
}
ฟัง XXX.XXX.XXX.XXX:80;
server_name site.com www.site.com;
กลับ 404;
}
ฉันขาดอะไรไปสำหรับผู้ใช้ 3 ดังนั้น nginx และ fpm จึงใช้งานได้ การกำหนดค่าเดียวกันสำหรับผู้ใช้ 1 และผู้ใช้ 2 ทำงานได้ดี