ไฟล์ปรับแต่ง nginx ของฉันเป็นแบบนี้:
server {
listen 80;
listen 443 ssl;
server_name XXX.com;
error_log /log/nginx/xxx.com_error.log;
access_log /log/nginx/xxx.com_access.log main;
root /data/www/;
index index.php index.html index.htm;
location ~ \.php$ {
add_header X-Frame-Options SAMEORIGIN;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
เราจำเป็นต้องกำหนดค่า nginx เพื่อตอบสนองต่อไปนี้:
1、 หาก url ไม่มีคำนำหน้า "/api/mobile/index.php", และพอร์ตของคำขอคือ 80 ให้เปลี่ยนเส้นทางไปที่ https 2、 หาก url มีคำนำหน้า" /api/mobile/index.php", เพียงแค่ไป
ดังนั้นฉันจะเพิ่มเนื้อหาในไฟล์กำหนดค่า:
location ~ ^(?!/api/mobile/index\.php).*$ {
if ($server_port = "80") {
return 301 https://$server_name$request_uri;
}
rewrite /* $server_name$reqeust_uri last;
}
ตอนนี้เนื้อหาไฟล์ config คือ:
server {
listen 80;
listen 443 ssl;
server_name XXX.com;
error_log /log/nginx/xxx.com_error.log;
access_log /log/nginx/xxx.com_access.log main;
root /data/www/;
index index.php index.html index.htm;
location ~ ^(?!/api/mobile/index\.php).*$ {
if ($server_port = "80") {
return 301 https://$server_name$request_uri;
}
rewrite /* $server_name$reqeust_uri last;
}
location ~ \.php$ {
add_header X-Frame-Options SAMEORIGIN;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
กว่าคำขอตรงกับตำแหน่งแรกจะไม่ตรงกับตำแหน่งอื่น
นั่นหมายความว่าคำขอเหล่านี้ไม่สามารถผ่าน php cgi ได้
มีใครบ้างที่รู้วิธีแก้ปัญหาหรือไม่