2017-08-06 3 views
1

Ich habe folgende nginx Konfiguration für mehrere Stamm (html/web Standard ist, html/pma zusätzliche Route ist):nginx mehrere Stamm Config Problem

server { 

     listen 443 http2 ssl; 
     listen [::]:443 http2 ssl; 

     server_name website.com; 
     server_tokens off; 

     root /usr/share/nginx/html/web; 
     index index.php; 

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

     location ^~ /pma { 
      root /usr/share/nginx/html; 

      location ~ \.php$ { 
      try_files $uri =404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
        fastcgi_index index.php; 
        include fastcgi_params; 
      } 

     } 


     location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
     } 
    } 

So standardmäßig /html/web/index.php geöffnet wird, jedoch website.com/pma öffnet /html/pma/, wo pma ist PHPMyAdmin.

Das Problem ist:

PHPMyAdmin Authentifizierung Formular index.php umleitet. Daher, wenn ich meine Anmeldeinformationen schreibe, leitet es mich an /html/web/index.php weiter! Aber sollte . Sogar Abmeldung von PHPMyAdmin Weiterleitungen zu /html/web/index.php!

Kann jemand eine bessere Art der Konfiguration vorschlagen?

+0

Ich benutze PMA nicht, aber haben Sie gesetzt 'PmaAbsoluteUri' Punkt zu'/pma/'? Siehe [diesen Link] (https://docs.phpmyadmin.net/en/latest/config.html#basic-settings). –

+0

move 'index' außerhalb von' location's. http://nginx.org/en/docs/http/ngx_http_index_module.html#index – Deadooshka

+0

@Deadooshka Hat nicht geholfen. Bearbeitet in Frage – Leeloo

Antwort

0

Ich kann zwei Fehler in Ihrer Konfiguration sehen.

Sie try_files Anweisung sollte mit /index.php oder =404 enden, nicht beides! Einzelheiten finden Sie unter this document.

Der verschachtelte location ~ \.php$-Block wird niemals konsultiert. Der äußere location ~ \.php$ Block hat Vorrang. Sie können dieses Problem lösen, indem Sie den ^~-Modifikator auf dem umgebenden Präfix location verwenden. Details siehe this document. Zum Beispiel:

location ^~ /pma { 
    ... 
    location ~ \.php$ { 
     ... 
    } 
} 
location ~ \.php$ { 
    ... 
} 
+0

Danke, ich überprüfe deine Antwort. Wie empfehlen Sie, try_files zu schreiben? – Leeloo

+0

Unter der Annahme, dass der Pfad '/ index.php' immer existiert, ist das' = 404' in der ** ersten ** 'try_files' Anweisung überflüssig, verwenden Sie:' try_files $ uri /index.php? $ Args'. Ich bin nicht davon überzeugt, dass der Begriff '$ uri /' überhaupt hilft - da er gegen Ihre Rewrite-Regel arbeiten wird - sein Zweck besteht darin, ein abschließendes '/' hinzuzufügen, wenn das Verzeichnis existiert. –

+0

Meinst du, ich sollte es überhaupt entfernen? – Leeloo