Enable Nginx FastCGI on Ubuntu 24.04
Nginx FastCGI on Ubuntu 24.04 links your web server to a background program called PHP-FPM so your site loads much faster. This bridge keeps PHP ready to run pages instantly instead of starting a new process for every single click, which stops your server from slowing down when lots of people visit at once.
You need root access to your server and a basic text editor to set it up.
Install fcgiwrap with `sudo apt install fcgiwrap`. Configure Nginx by creating `/etc/nginx/fcgiwrap.conf` and including it in your server block. Reload Nginx with `sudo systemctl reload nginx`.
Install FastCGI
Installing FastCGI on Ubuntu 24.04 requires the fcgiwrap package, which allows Nginx FastCGI to run CGI scripts properly. Open your terminal and run sudo apt install fcgiwrap to download and set up the package. Once the installation finishes, you can set up a dedicated folder for your scripts.
sudo apt install fcgiwrap
After installing the FastCGI package, we’ll define a location to store our CGI scripts. We’ll create a new /cgi-bin folder in the Nginx root directory for this post.
The URL to the CGI scripts directory will be [/var/www/cgi-bin/].
First, create the CGI directory by running the command below. Then, adjust the directory permissions as needed.
sudo mkdir /var/www/cgi-bin
sudo chmod 755 /var/www/cgi-bin
Next, run the command below to create an Nginx configuration file and define our CGI script location and other settings.
sudo nano /etc/nginx/fcgiwrap.conf
Then, copy the block below, paste it into the file, and save.
location /cgi-bin/ {
gzip off;
root /var/www;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}We'll use the default server block for this post, but you can create new ones.
Open Nginx default server block.
sudo nano /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com;
include fcgiwrap.conf;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
............
............Save and exit the file.
Next, enable FastCGI and reload Nginx services by running the command below.
sudo systemctl enable fcgiwrap
sudo systemctl reload nginx
Test Apache CGI execution
Testing script execution for Nginx FastCGI on Ubuntu 24.04 involves creating a simple test script to confirm your server reads CGI files correctly. Create a new file named index.cgi inside your cgi-bin folder using a text editor, add a basic print statement, and load it in your browser.
Run the command below to create a blank CGI index file.
sudo nano /var/www/cgi-bin/index.cgi
Copy the script below, paste it into the file, and save.
#!/usr/bin/python3
print("Content-type: text/htmln")
print("<html>n<body>")
print("<p style="width: 100%; font-size: 60px; font-weight: bold; text-align: center;">")
print("CGI is Enabled!!!")
print("</p>")
print("</body>n</html>")
Make the file executable by running the command below.
sudo chmod 705 /var/www/cgi-bin/index.cgi
Now, open your browser and browse the script.
http://example.com/cgi-bin/index.cgi

That should do it!
Conclusion:
- Configuring Nginx to run CGI scripts on Ubuntu 24.04 enhances the server’s capability to deliver dynamic web content.
- FastCGI plays a crucial role in handling CGI requests efficiently and effectively.
- Setting up the
/cgi-bindirectory allows for organized management of your CGI scripts. - Testing the configuration through a simple Python script ensures the setup works correctly.
- Overall, this configuration opens up possibilities for interactive web features, improving user experience on your website.
Was this guide helpful?
About the Author
Richard
Tech Writer, IT Professional
Richard is a writer at Geek Rewind who turns complex IT tasks into clear, step-by-step guides. He draws on years of hands-on experience in system administration and enterprise IT operations, focusing on Windows, Linux and WordPress: the problems people actually run into, and the fixes that work. His server and WordPress guides come from systems he runs himself. Richard builds and maintains the platform behind Geek Rewind, from its Ubuntu servers and Nginx configuration to its custom WordPress plugins. Many new tutorials start with readers' questions, and he's always glad to answer them in the comments.
No comments yet — be the first to share your thoughts!