mirror of
https://git.madhouse-project.org/algernon/iocaine.git
synced 2025-03-11 17:58:50 +01:00
53 lines
1.5 KiB
Markdown
53 lines
1.5 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.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;
|
|
}
|
|
```
|
|
|
|
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;
|
|
}
|
|
location /ai {
|
|
proxy_set_header Host $host;
|
|
proxy_pass 127.0.0.1:42069;
|
|
}
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://[::1]:8080;
|
|
}
|
|
}
|
|
```
|