2 votes

plusieurs applications dans nginx ; l'une est à la racine, l'autre pas

Voici mon fichier de configuration phpmyadmin :

server {
    listen   8080;
    server_name  phpmyadmin;

    access_log  /var/log/nginx/phpmyadmin.access.log;
    error_log   /var/log/nginx/phpmyadmin.error_log warn;

    root   /var/www/phpmyadmin;
    index  index.php index.htm;

    location ~ \.php {
            include /etc/nginx/fastcgi_params;
            keepalive_timeout 0;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_pass    127.0.0.1:9000;
    }
}

En ce moment, quand je vais à http://domain.com:8080 cela fait apparaître le site phpmysdmin. Je veux qu'il ouvre phpmyadmin seulement si je vais sur http://domain.com:8080/phpmyadmin . Quel changement dois-je apporter ici ?

J'ai environ 4 ou 5 applications que je vais exécuter à partir de nginx, et je préférerais garder chacune d'entre elles dans son propre espace de travail. sites-enabled au lieu d'un grand fichier de configuration qui les couvre tous.

3voto

sciguy1121 Points 830

Un peu plus verbeux :

server {
  listen       8080;
  server_name  phpmyadmin;

  access_log  /var/log/nginx/phpmyadmin.access.log;
  error_log   /var/log/nginx/phpmyadmin.error_log warn;
  location ~ /phpmyadmin/.*\.php {
    root            /var/www;
    include         /etc/nginx/fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_pass    127.0.0.1:9000;
  }
  location /phpmyadmin/ {
    root   /var/www;
    index  index.php;
  }
  location = /phpmyadmin {
    rewrite ^ /phpmyadmin/index.php;
  }
  location / {
    return 403;
  }
}

Notez également le paramètre de la racine : il est relatif au chemin de la requête, et non à ce qui vient après. Ainsi, une requête de http://phpmyadmin/phpmyadmin/index.php fera en sorte que nginx essaie de trouver le fichier dans $root/phpmyadmin/index.php où $root est le chemin de la racine défini dans le bloc location.

2voto

Toby Allen Points 6734

Lieu d'utilisation :

location /phpmyadmin {
        root   /var/www/phpmyadmin;
        include /etc/nginx/fastcgi_params;
        keepalive_timeout 0;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_pass    127.0.0.1:9000;
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X