J'essaie de faire en sorte que Nginx serve du contenu statique et le transmette également à .NET. Désolé si c'est simple, je suis nouveau sur nginx.
Voici mon fichier disponible sur les sites :
server {
listen 80;
server_name ip_here domain_here;
root /var/www/html;
location ^~ /static/ {
try_files $uri $uri/ cat.txt =404;
}
location / {
try_files @dotnet /dev/null dog.txt =404;
}
location @dotnet {
#...
}
##NOTE: THE FOLLOWING WORKED BEFORE I CHANGED IT TO THE ABOVE
##location / {
## try_files $uri $uri/ @dotnet;
##}
}
J'ai remplacé la partie commentée par la partie non commentée parce que (1) j'avais besoin de example.com/ pour diriger vers @dotnet mais cela try_files /
fonctionnait évidemment, et (2) les gens ont souligné qu'il était plus sûr d'avoir un fichier /static/
.
Lorsque j'essaie d'accéder à n'importe quel chemin, j'obtiens un 404 , pas même le debug dog.txt ou cat.txt.
Merci d'avance.
Vous avez un location ^~ /static/
bloc qui traite tout URI commençant par /static/
. La try_files
directive testera les paramètres du fichier afin de déterminer si un fichier local existe au chemin d'accès calculé. Le chemin est calculé en concaténant la valeur de la root
directive avec la valeur du paramètre *file. Ces paramètres de fichier doivent commencer par un /
.
Dans ce cas:
root /var/www/html;
location ^~ /static/ {
try_files $uri $uri/ /cat.txt =404;
}
L'URI /static/foo
sera testé pour voir si un fichier existe à /var/www/html/static/foo
, puis un répertoire à /var/www/html/static/foo
, puis un fichier à /var/www/html/cat.txt
, et enfin prendre l'action par défaut de renvoyer un état 404.
Seul le dernier paramètre de la try_files
directive peut être un code d'état, un emplacement nommé ou un URI (provoquant une redirection interne). Voir ce document pour plus de détails.
Si cat.txt
se trouve à /var/www/html/static/cat.txt
, utilisez :
try_files $uri $uri/ /static/cat.txt =404;
Notez que dans les deux cas, il y a un /
.
S'il n'y a pas de répertoire appelé static
, utilisez la alias
directive à la place. Mais notez que alias
et try_files
dans le même location
bloc, peut poser des problèmes .
Dans ce cas:
try_files @dotnet /dev/null dog.txt =404;
La try_files
déclaration n'a aucun sens. L'emplacement nommé ne peut apparaître qu'en dernière position. Ainsi, le dernier paramètre peut être un emplacement nommé ou un =404
, pas les deux.
Il n'est pas nécessaire de location /
bloquer l'envoi de la requête à un fichier location @dotnet
. Supprimez simplement le location /
bloc et renommez-le location @dotnet
en location /
.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots