summaryrefslogtreecommitdiffstats
path: root/content/posts/what-is-my-ip-with-nginx
diff options
context:
space:
mode:
Diffstat (limited to 'content/posts/what-is-my-ip-with-nginx')
-rw-r--r--content/posts/what-is-my-ip-with-nginx/index.org44
1 files changed, 44 insertions, 0 deletions
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.