Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Configuration Nginx: Deux applications dans un domaine

J'ai deux applications: interface HTML + JS et backend PHP. Je voudrais configurer Nginx Afin que les deux soient servis d'un domaine. Les demandes de retour sont effectuées à l'aide des URL commençant par

/api

.

Ma tentative était comme ça:

server {
root /path/to/frontend;
index index.html;
server_name example.com;

location / {
try_files $uri $uri/ /index.html;
}

location /api {
alias /path/to/backend;
index index.php;
try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}

Cependant, pour toutes les demandes au backend que j'obtiens 404: Le scénario principal est inconnu.

Y a-t-il un moyen de réaliser ce que j'essaie de faire ici? Comment?
Invité:

Blanche

Confirmation de:

Vous avez commis une erreur ordinaire lorsque les gens ne comprenaient pas comment cela fonctionne nginx. Rappelez-vous ce qui suit:

nginx sert toujours une demande avec

Seul


location

Bloc uniquement

.

Je vous suggère (ré) Lisez ce qui suit:
http://nginx.org/en/docs/http/ ... .html
Maintenant, en consultant votre configuration, les demandes de serveur doivent être desservies par deux emplacements:


location /api


location ~\.php$

Suivant
http://nginx.org/en/docs/http/ ... ation
Documentation, le premier d'entre eux s'appelle

préfixe

place et deuxième -

expression régulière

(expression régulière) une. nginx Vérifiez les deux, mais finalement choisir uniquement un, lequel dans votre cas est une expression régulière.

Maintenant, quand le traitement nginx Rediriger la demande par

/path/to/frontend/<yourfile>.php

dans PHP, Buing d'une sortie

root /path/to/frontend

, Comme c'est le seul défini. Ensuite, le backend ne peut pas trouver le fichier spécifié.

Vous pouvez essayer ce qui suit:

location /api {
alias /path/to/backend;
index index.php;
try_files $uri $uri/ /index.php;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;

# Useless? Request always ending up with '.php' here...
fastcgi_index index.php;

include fastcgi_params;

# Try to secure this block, which might lead to arbitrary code execution.
}
}

En ce qui concerne le manque de sécurité, j'ai mené un rapport sur nginx et PHP-FPM sur nginx.conf 2014 fin octobre. Les diapositives sont disponibles:
https://rosset.net/LAMP_just_died.pptx
. La vidéo sera bientôt disponible.
</yourfile>

Pour répondre aux questions, connectez-vous ou registre