IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[Nginx] configuration des fastcgi_param


Sujet :

Administration système

  1. #1
    Membre du Club
    Profil pro
    Bricoleur
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bricoleur

    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 61
    Points
    61
    Par défaut [Nginx] configuration des fastcgi_param
    Bonjour,
    Comme vous pouvez le voir dans le fichier de configuration, j'ai 3 applications web. Comme elles sont installées à partir de leur dépôt, elle se mettent où elles veulent, d'où l'utilisation de alias dans les locations /app1 et /app2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    # /etc/nginx/sites-available/default
     
    upstream php-handler {
      #server 127.0.0.1:9000;
      server unix:/var/run/php5-fpm.sock;
    }
     
    server{
        listen          80;
        server_name     exemple.com www.exemple.com;
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
        access_log /var/log/nginx/exp.access.log specialLog;
        location / {
          root /usr/share/nginx/html;
        }
        location /app1 {
          alias /usr/share/app1/html;
          index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
        location /app2 {
          alias /var/www/app2;
     
        }
        location ~* \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_param HTTPS on;
          fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
          fastcgi_pass php-handler;
          fastcgi_intercept_errors on;
          fastcgi_index index.php;
        }
    }
    Le soucis que je rencontre c'est avec php. À la racine ça marche, par contre pour app1 et app2 j'ai juste droit à un joli "file not found" avec au niveau du log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.1, server: exemple.com, request: "GET /app1/index.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "exemple.com"
    Une solution consisterait à faire des blocs serveur séparés, mais j'aimerai autant l'éviter. le site est en ssl derrière un proxy et avec let's encrypt, j'ai pas la wildcard.
    Ma question est donc comment je peux configurer les fastcgi_param pour que ça fonctionne ? Parce que je pense que mon problème vient de là, mais je sèche.
    Merci

    Édit :
    J'avance dans mes recherches, "location ~* \.php$" peut être inclus dans location/ puis dans location/app1 and so on.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    server{
        listen          80;
        ...
     
        location / {
          root /usr/share/nginx/html;
          location ~* \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_index index.php;
          }
     
        }
        location /app1 {
          alias /usr/share/app1/html;
          location ~* \.php$ {
            try_files $uri =404;
            ...
            fastcgi_index index.php;
          }
        }
        location /app2 {
          alias /var/www/app2;
          location ~* \.php$ {
            try_files $uri =404;
            ...
            fastcgi_index index.php;
          }
        }
    }
    Php fonctionne mais maintenant Nginx me renvoie un beau 403 sur exemple.com/app1 que je ne comprends pas mais pas sur exemple.com. J'ai les mêmes droits et propriétaires sur /usr/share/nginx et sur /usr/share/app1.

    Edit 2 :
    Bon, je commence à comprendre un peu location, alias et root.
    Quand on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    location /app1 {
        alias /usr/share/app1;
        ....
    }
    Alors $document_root vaut /usr/share/app1/app1, donc alias doit être /usr/share et j'ai mis toutes les déclarations fastcgi_param directement dans cette location.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    location ^~  /app1/ {
          alias /usr/share;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_index index.php;
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_param HTTPS on;
          fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
          fastcgi_pass php-handler;
          fastcgi_intercept_errors on;
     }
    Mon problème n'est pas encore résolu car mon application tierce est structurée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /usr
    --/share
    ----/app1
    ------/html
    --------/index.php
    --------/js
    --------/img
    --------....
    ------/exthtml
    ------...
    Et là pas encore trouvé. Une idée?
    Merci

    Édit : le dernier

    un rewrite et hop ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    location /app1/ {
    alias /usr/share;
    rewrite ^(/app1)/(.*)$ $1/html/$2 break;
    ...
    Bon c'est presque fini reste plus qu'à rajouter un try_file ou peut être un if même si c'est le diable
    Ubuntu 14.04 LTS
    LibreOffice 4.4

  2. #2
    Membre du Club
    Profil pro
    Bricoleur
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bricoleur

    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 61
    Points
    61
    Par défaut Pour faire plus propre ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    server {
        ....
     
        location ^~ /app1/ {
           alias /usr/share/app1/html/;
           index index.php index.html index.htm;
           try_files $uri $uri/ /app1/ /app1/index.php?q=$uri;
     
           location ~ ^/app1/(.+\.php)$ {
                   alias /usr/share/app1/html/$1;
                   try_files "" / /app1/index.php?q=$uri;
                   fastcgi_pass php-handler;
                   fastcgi_param SCRIPT_FILENAME $request_filename;
                   fastcgi_param HTTPS on;
                   include /etc/nginx/fastcgi_params;
           }
        }
    ...
    }
    Ubuntu 14.04 LTS
    LibreOffice 4.4

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Configurer des touches entre telnet et vt100 ou xterm
    Par NewB dans le forum Administration système
    Réponses: 4
    Dernier message: 19/05/2005, 18h07
  2. Configuration des droits pour samba avec ftp et www
    Par Alkmie dans le forum Réseau
    Réponses: 2
    Dernier message: 07/11/2004, 13h50
  3. [Dev-Pascal] Configuration des couleurs de l'éditeur impossible
    Par weiouch dans le forum Autres IDE
    Réponses: 3
    Dernier message: 18/10/2004, 19h02
  4. Configuration des disques sur un serveur pour Oracle
    Par hkhan dans le forum Administration
    Réponses: 5
    Dernier message: 29/09/2004, 12h57
  5. [JBUILDER 9][configuration des serveurs]
    Par bozo dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/08/2003, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo