Servir des fichiers php à différents endroits dans nginx

J’ai mon site Web principal et wordpress dans différents répertoires sur mon serveur sur lequel j’utilise nginx comme serveur Web. Le site principal est dans / home / me / www et WordPress est dans / home / me / wordpress. Je dois les avoir dans des répertoires distincts pour une raison particulière. Comment puis-je spécifier cela dans le fichier de configuration nginx? J’ai actuellement les éléments suivants et cela ne fonctionne pas:

location / { root /home/me/www; index index.php index.html index.htm; } location /blog { root /home/me/wordpress; index index.php index.html index.htm; } location ~ \.php$ { set $php_root /home/me/www; if ($request_uri ~ /blog) { set $php_root /home/me/wordpress; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } 

Il renvoie actuellement HTTP 404 lorsque j’essaie d’accéder à http: // mydomain / blog

Consultez cette question et le manuel Nginx .

Essayez de changer votre ligne de blog pour:

 location ^~ /blog/ { root /home/me/wordpress; index index.php index.html index.htm; } 

Je me suis débattu pendant des heures maintenant et j’ai finalement atteint les configurations de travail suivantes:

  location /php-app { passenger_enabled off; alias /path/to/php-app/$1; index index.php index.html; try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/php-app(.*)$ /index.php?q=$1 last; } location ~ \.php$ { alias /path/to/php-app/$1; rewrite ^/php-app(.*)$ $1 last; passenger_enabled off; fastcgi_pass unix:/tmp/php-fpm.socket; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /path/to/php-app$fastcgi_script_name; fastcgi_intercept_errors on; } 

Il suffit d’append plus de détails dans la réponse de @Nick Presta.

^ ~: Si un modificateur carat et tilde est présent et que ce bloc est sélectionné comme la meilleure correspondance d’expression non régulière, la correspondance des expressions régulières n’aura pas lieu.

Checkout Ces différences saisissent la description du lien ici