lets say I've a path like: /var/www/myside/ that path contains two folders... let's say /static and /manage I'd like to configure nginx to have an access to: /static folder on / (eg. http://example.org/) this folder has some .html files. /manage folder on /manage (eg. http://example.org/manage) in this case this folder contains Slim's PHP framework code - that means the index.php file is in public subfolder (eg. /var/www/mysite/manage/public/index.php) I've tried a lot of combinations such as server { listen 80; server_name example.org; error_log /usr/local/etc/nginx/logs/mysite/error.log; access_log /usr/local/etc/nginx/logs/mysite/access.log; root /var/www/mysite; location /manage { root $uri/manage/public; try_files $uri /index.php$is_args$args; } location / { root $uri/static/; index index.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 SCRIPT_NAME $fastcgi_script_name; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; } } The / works correctly anyway manage doesn't. Am I doing something wrong? Does anybody know what should I change? Matthew. shahabphp3791 gold badge2 silver badges10 bronze badges asked Feb 24, 2017 at 16:21 NubzorNubzor5221 gold badge6 silver badges14 bronze badges 2 To access a path like /var/www/mysite/manage/public with a URI like /manage, you will need to use alias rather than root. See this document for details. I am assuming that you need to run PHP from both roots, in which case you will need two location ~ \.php blocks, see example below. If you have no PHP within /var/www/mysite/static, you can delete the unused location block. For example: server { listen 80; server_name example.org; error_log /usr/local/etc/nginx/logs/mysite/error.log; access_log /usr/local/etc/nginx/logs/mysite/access.log; root /var/www/mysite/static; index index.html; location / { } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } location ^~ /manage { alias /var/www/mysite/manage/public; index index.php; if (!-e $request_filename) { rewrite ^ /manage/index.php last; } location ~ \.php$ { if (!-f $request_filename) { return 404; } fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } } The ^~ modifier causes the prefix location to take precedence over regular expression locations at the same level. See this document for details. The alias and try_files directives are not together due to this long standing bug. Be aware of this caution in the use of the if directive. answered Feb 26, 2017 at 10:52 Richard SmithRichard Smith50k7 gold badges95 silver badges95 bronze badges 2 Start asking to get answers Find the answer to your question by asking. Ask question Explore related questions See similar questions with these tags.