Anubis breaks openQA developer mode (websockets) #13252

Closed
opened 2026-04-02 17:23:21 +00:00 by adamwill · 4 comments
Member

Description of request

We put openQA (prod and stg) behind Anubis yesterday due to a bot flood, but discovered that breaks openQA's "developer mode", which uses websockets. There's some debug steps for developer mode here; there's also an architectural diagram here. On the openQA worker hosts, the ports used for the livehandler -> command server connection (AIUI) are listed in the host vars as tcp_ports, e.g. in https://forge.fedoraproject.org/infra/ansible/raw/branch/main/inventory/host_vars/openqa-a64-worker01.rdu3.fedoraproject.org .

### Description of request We put openQA (prod and stg) behind Anubis yesterday due to a bot flood, but discovered that breaks openQA's "developer mode", which uses websockets. There's some debug steps for developer mode [here](https://open.qa/docs/#debugdevelmode); there's also an architectural diagram [here](https://open.qa/docs/images/architecture.svg). On the openQA worker hosts, the ports used for the livehandler -> command server connection (AIUI) are listed in the host vars as `tcp_ports`, e.g. in https://forge.fedoraproject.org/infra/ansible/raw/branch/main/inventory/host_vars/openqa-a64-worker01.rdu3.fedoraproject.org .
Owner

So, as near as I can guess, this is happening because the proxy through anubis isn't also proxying websockets...

In roles/httpd/reverseproxy/templates/reversepassproxy.conf we setup some websocket proxy stuff, which results in:

<Proxy "balancer://openqa-websocket">
              BalancerMember "ws://openqa01:80"
          </Proxy>

RewriteEngine on
RewriteCond %{HTTP:Upgrade} ^WebSocket$ [NC]
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteRule .* "balancer://openqa-websocket%{REQUEST_URI}" [P]

So what I think we need to do is in roles/httpd/website/templates/website.conf I guess duplicate the above to proxy those before the rest of requests go to anubis... but I am not sure if we have all the right template variables at that point.

So, as near as I can guess, this is happening because the proxy through anubis isn't also proxying websockets... In roles/httpd/reverseproxy/templates/reversepassproxy.conf we setup some websocket proxy stuff, which results in: ``` <Proxy "balancer://openqa-websocket"> BalancerMember "ws://openqa01:80" </Proxy> RewriteEngine on RewriteCond %{HTTP:Upgrade} ^WebSocket$ [NC] RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteRule .* "balancer://openqa-websocket%{REQUEST_URI}" [P] ``` So what I think we need to do is in roles/httpd/website/templates/website.conf I guess duplicate the above to proxy those before the rest of requests go to anubis... but I am not sure if we have all the right template variables at that point.
Owner

ok, that worked in staging, submitted infra/ansible#3276 to roll to prod.

ok, that worked in staging, submitted https://forge.fedoraproject.org/infra/ansible/pulls/3276 to roll to prod.
kevin self-assigned this 2026-04-10 19:52:22 +00:00
Author
Member

yay, thanks robot overlord.

yay, thanks robot overlord.
Owner

ok, this should be rolled out to prod now too.

Let us know if it has any further issues.

ok, this should be rolled out to prod now too. Let us know if it has any further issues.
kevin closed this issue 2026-04-13 20:51:17 +00:00
Sign in to join this conversation.
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
infra/tickets#13252
No description provided.