How to Configure Nginx for PHP-FPM on Fedora 40 or 39

Configuring Nginx to work with PHP-FPM on Fedora 40 or 39 is essential for setting up a high-performance server capable of handling dynamic PHP content. Nginx excels at serving static content efficiently, while PHP-FPM manages PHP processes, optimizing the execution of PHP scripts. However, by default, the PHP-FPM service runs under the “apache” user, which is incompatible with Nginx. Therefore, it’s necessary to adjust the PHP-FPM configuration to ensure it works correctly with Nginx.

This guide will walk you through the steps to configure Nginx to work seamlessly with PHP-FPM on Fedora 40 or 39, including the necessary adjustments to the PHP-FPM configuration. By the end of this guide, your server will be ready to efficiently serve PHP-based websites.

Open www.conf Configuration File

First, open the configuration file (www.conf) with the following command:

sudo nano /etc/php-fpm.d/www.conf

Open the configuration file and replace the (Apache) user and group with the (Nginx) user and group as the images demonstrate below:

As above, locate “user” and “group” that have “apache”, which you now change to “nginx” as demonstrated below:

Press (CTRL+O) to save, then press (CTRL+X) to exit.

Make the necessary adjustments, then restart your PHP-FPM service.

sudo systemctl restart php-fpm

Example Nginx PHP-FPM Server Block Code

To handle PHP files with Nginx, you must configure the server block, as shown in the example below. Use this example for all server{} blocks that manage PHP files, and ensure you include “location ~ .php$.” in the configuration.

Example ONLY:

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

To verify that the changes made to the previous code did not cause any errors, you can use the following command to test the Nginx configuration.

sudo nginx -t

Example output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

To complete the PHP-FPM setup, restart the Nginx service.

sudo systemctl restart nginx

Conclusion

By configuring Nginx to work with PHP-FPM on Fedora, you’ve created a highly efficient and scalable web server environment capable of handling dynamic content with precision. Adjusting the PHP-FPM configuration to run under the appropriate user was a critical step in ensuring compatibility and security with Nginx. To maintain this setup, regularly monitor server performance and apply updates to both Nginx and PHP-FPM as needed. Proper maintenance will ensure that your server remains secure, efficient, and capable of handling increased traffic and demand.

Leave a Comment