Tập tin cấu hình nginx của tôi như thế này:
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;
}
}
Chúng ta cần cấu hình nginx để đáp ứng như sau:
1 、 Nếu url không có tiền tố "/api/mobile/index.php", và cổng của yêu cầu là 80, hãy chuyển hướng nó tới https 2 Nếu url có tiền tố" /api/mobile/index.php",just hãy tiếp tục
Vì vậy, tôi thêm nội dung trong tập tin cấu hình:
location ~ ^(?!/api/mobile/index\.php).*$ {
if ($server_port = "80") {
return 301 https://$server_name$request_uri;
}
rewrite /* $server_name$reqeust_uri last;
}
Bây giờ nội dung tập tin cấu hình là:
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;
}
}
Hơn yêu cầu khớp với vị trí đầu tiên, sẽ không khớp với vị trí khác.
Điều đó có nghĩa là những yêu cầu này không thể đi qua php cgi.
Có ai biết làm thế nào để giải quyết vấn đề?