• Docker
  • [Résolu] Configuration Nginx

Bonjour,

Je viens vous voir parce que je suis entrain d'essayer de migrer un site qui tournait sur un raspberry Pi, sur une "architecture Docker".

J'ai donc réussi à mettre en place php-fpm, mariadb et nginx ensemble sous docker, j'arrive à avoir "mon site" qui apparaît correctement (avec home.mondomaine.com), mais quand je veux accéder à la partie "api" par laquelle mes capteurs sont sensés envoyer les informations au serveur par l’intermédiaire d'une requête du style api.mondomaine.com/api/index.php?capteur=1&mesure=12&autremesure=25, au lieu d’exécuter le fichier php, il me le télécharge... Pourtant la configuration de nginx est identique pour les 2 sous-domaines... si quelqu'un avais quelques minutes à me consacrer, ça serait vraiment sympa.

`

server {

    listen 80 default_server;
    server_name api.mondomaine.com;  
         
    root /usr/share/nginx/api;
    index index.php;

    location / {
            # This is cool because no php is touched for static 
            # content. include the "?$args" part so non-default 
            # permalinks doesn't break when using query string
            try_files /index.php?$args $uri $uri/ ;
    }

   location ~ \.php$ {
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass php:9000;
    }

}

server {

    listen 80 ;
    server_name home.mondomaine.com;
    
    root /usr/share/nginx/home;
    index index.php;

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
    location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
    }
    location / {
            # This is cool because no php is touched for static 
            # content. include the "?$args" part so non-default 
            # permalinks doesn't break when using query string
            try_files /index.php?$args $uri $uri/ ;
    }

   location ~* \.php$ {
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in 
            #php.ini
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass php:9000;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
    }      

}
`

PS: Désolé, il y a un bug au niveau de l'affichage du code, normalement tout est en 1 bloc dans le même fichier

    myxomatom je pense qu'il faut creuser cette ligne :
    fastcgi_pass php:9000; je pense qu'il faudrait un fastcgi_pass 127.0.0.1:9000; non ?

      MattProd
      Je pense pas, comme c'est sous Docker, il faut mettre le nom du conteneur pour le fastcgi_pass.
      Par contre ce qui est bizarre, c'est que si je fais http://api.koenig.website/index.php il execute le fichier index.php... Mais comme il y a pas de paramètre forcément ça enregistre rien dans ma DB.

      EDIT: Finalement, ça fonctionne... je sais pas pourquoi, mais ça marche... Probablement un intervention du dieu Machine

      En tout cas merci pour le coup de main @MattProd

      myxomatom a renommé le titre en [Résolu] Configuration Nginx.
      Répondre…