nginx php with wordpress at root and another app in subdirectory

nginx, php

Solution

I don't know how to do it using your alias and setting $php_root. I do know how to fix it if you make a symbolic link from the external folder into your wordpress-rootdirectory.

So using the terminal you make a symbolic link so that your stacks-subdirectory is an actual subdirectory:

 ln -s /another/path/to/usr/local/share/stacks/php /path/to/nginx/html/wordpress/stacks

As an nginx-config I would use

server {
    listen       myserver.edu:8081;                
    server_name  myserver.edu:8081;

    root /path/to/nginx/html/wordpress;
    index index.php;       

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

    location /stacks {
        try_files $uri $uri/ /stacks/index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   localhost:8082;
        include        fastcgi_params;
    }
}

Problem

I'm having some issues getting a subdirectory working on my nginx server. I'm using nginx to serve a wordpress installation as the web root, and trying to run an additional php application at a subdirectory. Wordpress runs fine, but I cannot for the life of me get the application to run in the subdirectory without a 404, 403, or "No input file specified." error with various configurations. I'm sure there is something obvious, but I can't seem to figure it out! Here is the relevant config: Any help would be greatly appreciated! ``` server { listen myserver.edu:8081; server_name myserver.edu:8081; try_files $uri $uri/ /index.php; location / { root /path/to/nginx/html/wordpress; index index.php; } location /stacks { alias /another/path/to/usr/local/share/stacks/php; index index.php; } location ~ \.php$ { set $php_root /path/to/nginx/html/wordpress; include fastcgi_params; fastcgi_pass localhost:8082; fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; } location ~ \stacks.php$ { set $php_root /another/path/to/usr/local/share/stacks/php; include fastcgi_params; fastcgi_pass localhost:8082; fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; } ```

Original source