How to Smoke Test Nginx Server Block Routes
When your Nginx routes start getting complex it can be time-consuming to makes heads or tails of the configs. I wanted an easy and automated way to make sure that my Nginx server blocks were routing correctly to my backend apps/websites and replying with the right response code, a simple
200 OK in most cases would suffice. Call it functional testing if you like. So I whipped up a simple Python script to make it happen.
You need PyYAML and Requests in order to use this; it assumes that Nginx is listening on standard HTTP (80) and/or HTTPS (443) ports; and it should be run on the same server on which Nginx is running (localhost):
This works by reading a simple YAML file for determing which URLs to test. The YAML file is a dictionary of lists where the key of each list is the server name to be tested and the indices of each list are URIs to be tested. The following example (
endpoints.yaml) would test
example.com: - alice - bob/marley - charlie example.org: - david - ""
Essentially, the Python script is the command line equivalent to:
and now, running the Python script gives you an at-a-glance look at how things are lined up:
$ python smoke.py endpoints.yaml 200 http://example.org/david 200 http://example.org/ 304 http://example.com/alice 404 http://example.com/bob/marley 200 http://example.com/charlie
So I can quickly see that there might be something funky going on with Alice and Bob up there. It also supports HTTPS requests by passing the
$ python smoke.py endpoints.yaml --proto=https 200 https://example.org/david 200 https://example.org/ 304 https://example.com/alice 404 https://example.com/bob/marley 200 https://example.com/charlie
or if you want to test both, pass the
comments powered by Disqus