Quels sont le nom et l'emplacement du fichier de configuration Nginx (équivalent htaccess)?

30

Il existe de nombreux didacticiels sur la façon d'écrire des règles de réécriture Nginx pour imiter le fichier .htaccess d'Apache, mais je ne peux pas dire avec certitude que je connais le nom ou l'emplacement de ce soi-disant fichier de configuration Nginx. Je recherche spécifiquement le fichier de configuration Nginx qui vous permet d'écrire le chemin du serveur et les directives PHP. J'utilise Ubuntu 12 linux et Codeigniter comme framework PHP.

Voici ce que je sais jusqu'à présent:

  1. Ce fichier: /etc/nginx/nginx.confmalgré son nom attrayant n'est apparemment pas le lieu des directives serveur.
  2. Ce fichier: /etc/nginx/sites-available/defaultsemble être ce dont j'ai besoin (je suis capable de générer des erreurs php spécifiques à mon application) mais je ne peux pas obtenir le routage de chemin spécifique à Codeigniter correct. Tout d'abord, est-ce le fichier "config" / l'équivalent .htaccess dont tout le monde parle?
Tim Peterson
la source
Votre problème n'est pas avec PHP le langage (c'est-à-dire la programmation en PHP), c'est avec la configuration PHP sur un serveur spécifique, ce qui explique les votes fermés complètement valides. Je ne peux pas commenter la dernière partie de votre message, car elle semble très subjective et biaisée.
nickb
1
Vous pouvez trouver où se trouve nginx config en utilisant nginx -Vce que vous pouvez trouver dans le manuel avec man nginx. L' -Voption est documentée comme "-V Imprimer la version nginx, la version du compilateur et configurer les paramètres de script.". Si nginxn'est pas sur votre chemin, utilisez which nginxqui renvoie le chemin complet vers nginx$(which nginx) -V
bucabay

Réponses:

28

J'utilise PHP avec nginx sur mon serveur de développement avec la configuration suivante:

  1. en /etc/nginx/nginx.confI ajouté: include /etc/nginx/sites-enabled/*;avant le dernier }.

  2. exécutez les commandes suivantes pour créer vos configurations de site:

    mkdir /etc/nginx/sites-available/
    mkdir /etc/nginx/sites-enabled/
    cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/<site>
    
  3. éditer la configuration du site, quelques configurations possibles (c'est ce à quoi j'ai fait référence dans ma configuration): http://kbeezie.com/view/nginx-configuration-examples/

  4. lien vers le site disponible pour l'activer

    ln -s /etc/nginx/sites-available/<site> /etc/nginx/sites-enabled/<site>
    
  5. gardez à l'esprit que vous pouvez réellement inclure des fichiers dans les configurations presque n'importe où, ce qui facilite la création de plusieurs sites lorsque vous souhaitez regrouper des configurations similaires.

Oui, .htaccess est comparable au server{}bloc dans nginx, mais ils sont également très différents. nginx a une approche beaucoup plus légère pour analyser la configuration, et il n'analysera pas les répertoires du site pour une configuration supplémentaire, uniquement ce qui est vu par nginx.conf.

abestic9
la source
- @ Andrew merci beaucoup d'informations utiles !, par défaut mon /etc/nginx/nginx.conffichier a déjà tout include /etc/nginx/sites-enabled/*;à la fin. Il semble que ces 2 fichiers se parlent sur mon serveur et maintenant je traite des problèmes spécifiques à Codeigniter. Utilisez-vous codeigniter? Il y a un peu de funkiness sur le chemin que je dois maîtriser ...
tim peterson
J'utilise mon propre framework qui est assez similaire (quoique plus primitif) à CodeIgniter. En ce moment, j'essaie de convertir mes règles d'expression rationnelle mod_rewrite en module HttpRewrite de nginx. Ma première percée majeure a été de dépasser les erreurs 403/404 affichées par nginx lorsque j'ai mal configuré le rootparamètre. N'hésitez pas à consulter mes questions si vous avez besoin d'inspiration.
abestic9
merci pour le conseil sur la vérification de vos questions. Je pense que je comprends mieux maintenant, merci de m'avoir mis sur le chemin ...
tim peterson