mirror of
https://git.madhouse-project.org/algernon/iocaine.git
synced 2025-02-20 16:38:46 +01:00
Thanks to @redshiftltd for test driving the nginx setup, and providing very valuable feedback & the updated configurations. Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
55 lines
1.8 KiB
Markdown
55 lines
1.8 KiB
Markdown
---
|
|
title: Using nginx with iocaine
|
|
description: Setting up nginx to front for iocaine
|
|
---
|
|
|
|
# Getting started
|
|
|
|
In here, I assume that iocane has already been [configured](@/configuration/index.md) and [deployed](@/deploying/iocaine.md). Furthermore, lets assume that we have a site running at `[::1]:8080`, and we want to serve that with `nginx`. Normally, that would look something like this:
|
|
|
|
```nginx
|
|
server {
|
|
server_name blog.example.com;
|
|
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://[::1]:8080;
|
|
}
|
|
}
|
|
```
|
|
|
|
# Routing AI agents elsewhere
|
|
|
|
To serve something different for AI user agents, the idea is to create a mapping between user-agent and badness, such that AI agents will evaluate to a truthy value, while unmatched against will default to a false-y one. We can do this with a `map` outside of the `server` block:
|
|
|
|
``` nginx
|
|
map $http_user_agent $badagent {
|
|
default 0;
|
|
~*gptbot 1;
|
|
~*chatgpt 1;
|
|
~*ccbot 1;
|
|
~*claude 1;
|
|
}
|
|
```
|
|
|
|
You can put this into a file common between all servers, like `/etc/nginx/conf.d/iocaine.conf`, because on many distributions, any `*.conf` file under `/etc/nginx/conf.d` will get automatically included. This way, you can share it between servers, without having to include it from multiple files manually.
|
|
|
|
Within the `server` block, we'll rewrite the URL if find a match on `$badagent`, and the proxy *that* location through to `iocaine`. The reason we need the `rewrite` is that `nginx` does not support `proxy_pass` within an `if` block. In the end, our `server` block will look like this:
|
|
|
|
|
|
```nginx
|
|
server {
|
|
server_name blog.example.com;
|
|
if ($badagent) {
|
|
rewrite ^ /ai$request_uri;
|
|
}
|
|
location /ai {
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:42069;
|
|
}
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://[::1]:8080;
|
|
}
|
|
}
|
|
```
|