upstream backend {
server 192.168.0.100:80;
server 192.168.0.100:81;
}
server {
listen 80;
server_name www.abc.com abc.com;
root /opt/wwwroot/abc.com/;
location / {
proxy_pass https://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
location = / {
index index.html index.htm index.php;
}
}
Je souhaite que les utilisateurs n'utilisent pas proxy_pass lorsqu'ils visitent www.abc.com/. Au lieu de cela, ils peuvent accéder directement à la page locale /opt/wwwroot/abc.com/index.html, et toutes les autres demandes passeront par proxy_pass
.
J'y travaille depuis longtemps et je n'arrive pas à comprendre, c'est un peu bizarre, aidez-moi. .
Cela est dû aux règles de correspondance d'emplacement par défaut de nginx. La correspondance d'emplacement de nginx correspond à l'URI relatif. Les règles de correspondance d'emplacement de nginx sont les suivantes :
Comprenant les règles de correspondance d'emplacement de nginx, votre situation est facile à expliquer. L'URI relatif de www.abc.com/ est /. Premièrement, il correspond avec précision à d'autres URI relatifs tels que www.abc.com/adf. Il s'agit de /adf, et il est transmis à la correspondance universelle selon vos règles de correspondance géographique
Si vous souhaitez résoudre ce problème, mettez simplement l'index dans la correspondance universelle. Écrire un location = / {} seul n'a aucun effet selon vos besoins
Si l'emplacement ci-dessous n'est pas nécessaire, indexez simplement index.html et c'est tout.
Remplacez les deux emplacements. . .