Meine Nginx-Konfigurationsdatei sieht folgendermaßen aus:
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;
}
}
Wir müssen den Nginx konfigurieren, um Folgendes zu erfüllen:
1 、 Wenn die URL nicht das Präfix "/api/mobile/index.php"," hat und der Port der Anforderung 80 ist, leiten Sie sie an https 2 weiter. 、 Wenn die URL das Präfix "/api/mobile/index.php", hat, fahren Sie fort
Also füge ich Inhalt in die Konfigurationsdatei ein:
location ~ ^(?!/api/mobile/index\.php).*$ {
if ($server_port = "80") {
return 301 https://$server_name$request_uri;
}
rewrite /* $server_name$reqeust_uri last;
}
Der Inhalt der Konfigurationsdatei lautet nun:
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;
}
}
Wenn die Anforderung mit dem ersten Standort übereinstimmt, stimmt sie nicht mit dem anderen Standort überein.
Das bedeutet, dass diese Anfrage nicht durch das PHP-CGI gehen konnte.
Gibt es jemanden, der weiß, wie man das Problem löst?
://$server_name$request_uri;
named
location verwenden, anstatt diefastcgi
Parameter zu duplizieren .Es gibt die Option, zwei getrennte Serverkontexte zu verwenden und keine if- Anweisung zu verwenden (lesen Sie hier, warum: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ ).
Die Konfiguration könnte sein:
quelle