Nginx configuration problem when splitting across front & backends, when using php ?

jimssupp at rushpost.com jimssupp at rushpost.com
Mon Jan 4 00:18:07 UTC 2016


I installed an Nginx server this weekend.

I got the Symfony PHP framework, and a test app, running on it, using php-fpm, and a simple all-in-one Nginx config.

I'm trying to figure out splitting front- and back-ends using Nginx proxy.

I set up a FrontEnd Nginx config

	server {
	  server_name  test.lan;
	  listen 10.0.0.1:443 ssl http2;

	  root  /dev/null;
	  access_log  /var/log/nginx/access.log  main;
	  error_log   /var/log/nginx/error.log  info;
	  autoindex  off;
	  rewrite_log off;
	  ssl on;
	  ssl_verify_client  off;
	  ssl_certificate  "ssl/test.crt";
	  ssl_trusted_certificate  "ssl/test.crt";
	  ssl_certificate_key  "ssl/test.key";
	  include includes/ssl.conf;

	  location / {
	    proxy_pass http://127.0.0.1:10000;
	  }
	}

and the Backend proxy listener for it,

	server {
	  server_name  test.lan;
	  listen  127.0.0.1:10000 default;
	  root  /srv/www/test/symfony/web/;
	  access_log  /var/log/nginx/access.log  main;
	  error_log   /var/log/nginx/error.log  info;
	  ssl  off;
	  gzip  off;
	  rewrite_log  on;

	  location / {
	    try_files $uri /app.php$is_args$args;
	    fastcgi_intercept_errors on;
	  }

	  location ~ ^/(app_dev|config)\.php(/|$) {
	    fastcgi_pass  http://127.0.0.1:9000;
	    fastcgi_split_path_info  ^(.+\.php)(/.*)$;
	    include  fastcgi_params;
	    fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
	    fastcgi_param  DOCUMENT_ROOT  $realpath_root;
	  }

	  location ~ ^/app\.php(/|$) {
	    fastcgi_pass  http://127.0.0.1:9000;
	    fastcgi_split_path_info  ^(.+\.php)(/.*)$;
	    include  fastcgi_params;
	    fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
	    fastcgi_param  DOCUMENT_ROOT  $realpath_root;
	    internal;
	  }
	}

When I start Nginx I get no errors.

When I visit

	https://test.lan/

I see

	Welcome to Symfony 3.0.1

	Your application is ready to start working on it at: /srv/www/test/symfony/

So that's the same as with the all-in-one Nginx config.

But, with this split config I'm trying out, when I visit

	https://test.lan/app.php

I get

	404 Not Found

And when I visit

	https://test.lan/app_dev.php

I get

	File access denied. cref: app_dev.php for more info.

Since I got this working right in my all-in-one config, but not in my split-config, I guess the problem's in my config and not with Symfony or php-fpm.

How come I can get "/" working but not either "/app.php" or "/app_dev.php"?



More information about the nginx mailing list