From acf85c77127fee239e57d1acbd820f527df44c91 Mon Sep 17 00:00:00 2001 From: Dante Catalfamo Date: Mon, 2 Dec 2024 21:02:11 -0500 Subject: ip-nginx: create article --- content/posts/what-is-my-ip-with-nginx/index.org | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 content/posts/what-is-my-ip-with-nginx/index.org diff --git a/content/posts/what-is-my-ip-with-nginx/index.org b/content/posts/what-is-my-ip-with-nginx/index.org new file mode 100644 index 0000000..3f0c118 --- /dev/null +++ b/content/posts/what-is-my-ip-with-nginx/index.org @@ -0,0 +1,44 @@ +#+TITLE: Creating a "What Is My IP" website in four lines with nginx +#+DATE: 2024-12-02T20:28:47-05:00 +#+DRAFT: false +#+DESCRIPTION: +#+TAGS[]: nginx +#+KEYWORDS[]: nginx +#+SLUG: +#+SUMMARY: + +I recently wanted to create an endpoint on a development machine that +could return my external IP address. Normally I would use one of a +handful of services https://canhazip.com/ or https://ifconfig.ca/, but +I wanted to see how easy it would be to make my own. As it turns out, +it's incredibly easy, and doesn't even require leaving the reverse proxy. + +Using =nginx=, we can just create a block like this. + +#+begin_src +location /ip { + default_type text/plain; + return 200 "$remote_addr\n"; +} +#+end_src + +Where location =/ip= is the path that returns the IP. + +If we were to put that into a full server configuration, it might look +something like this. + +#+begin_src +server { + listen 80 default_server; + + server_name _; + + location / { + default_type text/plain; + return 200 "$remote_addr\n"; + } +} +#+end_src + +It's really that simple. Now nginx will happily return the requesting +IP address. No need to proxy to another application or service. -- cgit v1.2.3