Débutant utilisant nginx, j'ai quelques questions pour les experts.
为情所困
为情所困 2017-05-16 17:23:54
0
2
577

J'ai déjà vu que MOOC utilise nginx pour déployer des ressources statiques, j'ai donc voulu essayer d'utiliser ngjinx pour déployer mes ressources. Nous avons maintenant besoin des questions suivantes :

  1. Par exemple, ce lien sur le MOOC : http://www.imooc.com/course/list, comment correspond-il au suffixe /course/list,我只能使用list.html,我想让每个连接都不会出现.html après l'URL ? Est-ce une réécriture de l'URL, ou est-il configuré avec l'emplacement ?
2.


Ce qui précède est une configuration d'emplacement, utilisée pour le proxy inverse. Elle ne devrait pas pouvoir correspondre à quelque chose comme

, mais elle ne correspondait pas, elle n'a donc pas été transmise au serveur proxy, mais la page statique s'est affichée normalement. /test/test.html

Mais cela peut correspondre comme ceci :

pour obtenir les données correctes. /products/getproducts/2,确实转发到了:localhost:8086/products/getproducts/2

Demandons d'abord à ces deux-là. Je ne connais pas grand-chose aux serveurs, donc je suis peut-être un peu idiot, j'espère que vous pourrez y répondre

.

为情所困
为情所困

répondre à tous(2)
大家讲道理

Première question :
Nginx peut facilement importer des données de requête dans le contrôleur frontal du framework tel que index.php à l'aide de la directive try_files :

location {
    try_files $uri $uri/ /index.php?$args;
}

Le contrôleur frontal index.php peut utiliser $_SERVER['REQUEST_URI'] pour obtenir la chaîne de paramètres d'URL /course/list. S'il y a des paramètres plus tard, tels que /course/list?page=2&tag=mysql. peut utiliser $_SERVER ['QUERY_STRING'] Obtenez la chaîne de requête page=2&tag=mysql, puis décodez-la vous-même et utilisez exploser pour diviser la chaîne avec & pour obtenir un tableau de paramètres similaire à $_GET. Vous pouvez également utiliser $_GET directement pour. obtenez le tableau de paramètres.

En bref, c'est l'entrée du programme index.php et le programme qu'il contient qui décident s'il faut charger le fichier statique HTML et le renvoyer, ou se connecter à la base de données pour le traitement.
Si vous souhaitez que Nginx détermine si le cache HTML est atteint, vous pouvez le configurer comme ceci :

location / {
    try_files $uri $uri/ /html$uri.html /index.php?$args;
}

Par exemple, lors de l'accès à /post/1024, Nginx tentera d'accéder aux fichiers suivants dans l'ordre donné par try_files :
/post/1024 ($uri représente le fichier)
/post/1024/ ($uri/ représente le répertoire)
/html/post/1024.html (/html$uri.html représente votre cache statique HTML)
Si ni l'un ni l'autre n'existe, les informations URI ainsi que les paramètres seront transmis à index.php pour traitement (le dernier /index.php?$args exprime cette signification).

習慣沉默

Question 1, Vous pouvez utiliser la méthode de réécriture, par exemple :

rewrite "^/(course/.*)/?"   .html last;

Il est à noter que seules toutes les demandes commençant par cours seront réécrites
xxx.com/course/list -> xxx.com/course/list.html
xxx.com/course/list/sub -> xxx.com/course/list/sub.html

Question 2
J'ai l'impression qu'il devrait y avoir d'autres configurations d'emplacement. Si cela vous convient, publiez l'intégralité de la configuration nginx

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal