Skip to content
Advertisement

nginx return 200 but empty reponse

I am currently migrating apache to nginx and I am struggling to get it working. Basically I get a 200 response with no content. My nginx configuration is as below:

server {

  listen   [::]:8749 default ipv6only=on;

  server_name localhost;

   location / {
    root /build/website;
    index status.php index.html index.htm;
   }

  location ~ .php$ {
    fastcgi_pass unix:/var/run/php7.4-fpm.sock;

    fastcgi_index status.php;
    include fastcgi_params;
  }



}

And here is www.conf file

[www]
; Replace the tcp listener and add the unix socket
listen = /var/run/php7.4-fpm.sock

; Ensure that the daemon runs as the correct user
listen.owner = www-data
listen.group = www-data


listen.mode = 0666

; Unix user of FPM processes
user = www-data
group = www-data

; Choose process manager type (static, dynamic, ondemand)
pm = ondemand
pm.max_children = 16

fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

My URL is something like:

/r.php?format=json&a=1&e=1&zoom=17

PHP files are on /build/website directory and it is primarily an API site, no static or HTML files.

Is there anything obvious I am missing?

Many thanks. Cheers, Vini

Advertisement

Answer

You don’t have the SCRIPT_FILENAME FastCGI parameter defined. Add the

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

directive to your PHP handler location block. Additionally, that location block uses the default nginx root instead of /build/website one, move the root directive to the server context.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement