If you are encountering issues with redirection with header, it may not be related to Nginx itself but rather how the PHP code is being executed or other factors.

Here are a few things to consider when using the header() function for redirects in PHP:

1. Make sure the header() function is called before any output is sent to the browser. The header() function must be called before any HTML tags, whitespace, or other content are echoed or printed in your PHP script. Otherwise, the redirect may not work as expected.

2. Verify that the $url variable contains the correct URL. Ensure that it includes the correct protocol (e.g., http:// or https://) and the full URL path, including any query parameters if necessary. Double-check the value of the $url variable to ensure it is set correctly.

3. Setting output_buffering to On in the PHP configuration can help in cases where the redirect is not working due to output being sent to the browser before the header() function is called. Enabling output buffering allows PHP to capture and buffer the output generated by the script, delaying its delivery to the browser until the script has finished executing.

a. Open the php.ini file using a text editor.

b. Search for the output_buffering directive in the file. If it is already present, ensure that it is set to On. If you find the line output_buffering = Off, change it to output_buffering = On. If the directive is not present, you can add it to the file as a new line: output_buffering = On.

c. Save the changes to the php.ini file.

d. Restart your web server for the changes to take effect. The process for restarting the web server can vary depending on your server setup. Common commands include

​sudo service apache2 restart

(or)
sudo service nginx restart.