v0.43.0
New: Disable Built-In DNS Server
iron-proxy's DNS server can now be disabled entirely via dns.enabled: false (or the IRON_DNS_ENABLED environment variable). When disabled, the proxy skips the :53 listener, drops the dns.proxy_ip requirement, and does not start the DNS server at all. Existing deployments are unaffected: the field defaults to true.
This is useful when clients reach the proxy via explicit HTTP_PROXY or HTTPS_PROXY environment variables rather than DNS interception, removing the need to run a DNS listener in those environments.
dns:
enabled: falseNew: Per-Upstream Postgres Session Settings
Postgres upstreams now support a settings list of session variables (GUCs) the proxy injects at session start, before the SET ROLE downgrade. Settings are applied via set_config with bound parameters (no value quoting), so they are safe to use with untrusted values.
The proxy pins every name in the list: clients may not SET, RESET, or set_config a pinned name afterwards. RESET ALL and DISCARD ALL are now also blocked whenever the proxy manages a role or session settings, closing a gap where those commands could previously undo the managed role. This makes settings suitable as a security boundary, for example passing a tenant identifier that a Row-Level Security policy keys off.
upstreams:
- database: appdb
dsn:
type: env
var: PG_APPDB_DSN
role: tenant_role
settings:
- name: app.tenant_id
value: centaurNames must be bare or dotted GUC identifiers; role and session_authorization are reserved (use the role field for those). Values are static per-upstream. Postgres support is experimental.