Send additional HTTP headers to Nginx’s FastCGI

It’s not that often that I come across a useful, but undocumented feature in a major software application.  It happened recently, so I’ll document it here just for the future self.

For a particular setup, I had to send additional HTTP headers (let’s use X-GEOIP for this example) to the PHP-FPM, which was configured as a FastCGI backend in Nginx web server.  This StackOverflow thread suggested several solutions, but this one was the easiest and worked like a charm: use Nginx’s fastcgi_param directive AND prefix your variables with HTTP_.  For example:

location ~ \.php$ {
  fastcgi_param HTTP_X_GEOIP $geoip;
  ... other settings
}

 

Text processing in the shell

Whether you are an experienced shell user, or just a newbie, have a look at this article for a collection of the great tools and examples of how to process text in the shell. It includes all the usual suspects: cat, head, tail, wc, grep, cut, paste, sort, uniq, awk, tr, fold, and sed. Great examples and real life scenarios for each are also provided, with the logic explained and more complex use cases broken down into steps.

ctop – top-like interface for monitoring Docker containers

ctop is a very simple, but very useful tool for when you run a number of Docker containers and want to have a top-like overview of their CPU, memory, and network usage.

This article provides more details on how to install, run, and use ctop effectively, including container filtering, single container view, etc.

Install Postman on Fedora 31

Postman is a great tool for building and testing APIs. Unfortunately, however, it doesn’t come packaged as an RPM, so there’s some trickery involved in installing it on Fedora.

This blog post was very useful, with some minor corrections. Here’s what I had to do:

  • Download Postman from the site.
  • Move the archive to somewhere global: mv Postman-linux-x64-7.16.1.tar.gz /opt/
  • Extract the archive: tar xzvf Postman-linux-x64-7.16.1.tar.gz
  • Remove the archive: rm Postman-linux-x64-7.16.1.tar.gz
  • Check which directories are in the path: echo $PATH
  • Create a symbolic link in one of path directories: sudo ln -s /opt/Postman/Postman /usr/local/bin/postman
  • Create the desktop file: touch ~/.local/share/applications/postman.desktop
  • Edit the file with the content below.
[Desktop Entry]
Name=Postman
GenericName=API Client
X-GNOME-FullName=Postman API Client
Comment=Make and view REST API calls and responses
Keywords=api;
Exec=/usr/local/bin/postman
Terminal=false
Type=Application
Icon=/opt/Postman/app/resources/app/assets/icon.png
Categories=Development;Utilities;

Now you can run Postman both via the command line (postman) and from the Gnome/Mate menu. You’ll find it under Applications->Programming.

dive – Docker image explorer

dive is a Docker image explorer. This is a very handy tool when you are trying to figure out how a Docker image was built and what’s in it, and you don’t have the original Dockerfile.

It uses the meta information for each layer to show you which command was used to create the layer, and which files were added, removed, or changed.

Additionally, you can use dive to make sure your Docker images are optimized and their size is under control. You can even integrate dive into your CI/CD pipeline!