WebSocket Support Required - Enable WebSocket proxying
Proxy Headers - Forward original host and IP headers
Timeouts - Increase timeouts for long-lived connections
Buffer Sizes - Increase for large state updates (64KB recommended)
What’s the status and capabilities of the reverse proxy module of nethsec at the moment ? I know that the doc states that WebSocket support: all reverse proxies automatically support WebSockets but I must admit that I’ve doubts regarding my recent experiences.
Hello Matthieu, could you share with me the reverse proxy configuration on the firewall?
Websocket request upgrade, headers with original IP and buffer size are already turned on by default, the only thing that could hinder your application is the timeout, but in case of a WS switching, shouldn’t be a problem.
The config is user-first, so your edits should override the webui.
I tried to add some lines to the ns_ae5f1a1b.proxy file but they were scratched as soon as I did a ngninx reload.
I confess that I don’t really know what I’m doing here, not used at all at ngninx configuration files so I might perfectly do something dumb. Apologies if it is the case. Ready to try any suggestion to get this working.
I saw your PR regarding the webscocket issue. Here’s GPT’s comment (it might of course perfectly be complete bs) :
Why the 403 persists
Upgrade headers ≠ auth bypass.
The PR enables WS upgrade on all locations, but if your vhost/path also has auth/middlewares enabled, nginx will still reject /ws with 401/403 before it ever upgrades. WebSockets don’t survive an auth challenge. You still need a path rule that excludes auth on /ws.
For the record I had similar problems getting a collabora instance to work behind this reverse proxy. It did work with NS7.
Edit /etc/config/nginx and adapt the reverse proxy for pulse:
Following options are different on your side, don’t overwrite it
The hostname pulse.domain.tld
ns_420c686 and ns_1737df38
The upstream IP 192.168.3.141
config location 'ns_420c686c'
option proxy_http_version '1.1'
list proxy_set_header 'X-Forwarded-For $proxy_add_x_forwarded_for'
list proxy_set_header 'X-Real-IP $remote_addr'
list proxy_set_header 'Upgrade $http_upgrade'
list proxy_set_header 'Connection "upgrade"'
list proxy_set_header 'Host pulse.domain.tld'
option uci_server 'ns_1737df38'
option location '/'
option resolver '127.0.0.1'
option proxy_pass 'http://$upstream'
list set '$upstream 192.168.3.141:7655'
list proxy_set_header 'X-Forwarded-Proto $scheme'
list proxy_connect_timeout '7d'
list proxy_send_timeout '7d'
list proxy_read_timeout '7d'
list proxy_buffering 'off'
list proxy_buffer_size '64k'
list proxy_buffers '8 64k'
list proxy_busy_buffers_size '128k'
How did you install pulse?
The install script on a pve node didn’t work for me so I installed it on NS8 using scratchpad and it just worked using podman so I’m going to add an ns8-pulse app soon.
I’m not sure, we would need to add a lot of nginx options in the advanced section of the UI to support different scenarios but NethSecurity aims to be a simple to use firewall so I think it’s best to customize manually when needed.
I didn’t manage to install it, do you use Proxmox 8 or already 9?
I know nothing about this but I’m not sure there is anything special in the way Pulse works ? Beside this, there is nothing wrong to add a field to the UI in order to ease the customisation.
I didn’t manage to install it, do you use Proxmox 8 or already 9?
Nope, version 8. I’m afraid you should post a request in the Support section
I face another similar problem : I try to create a reverse proxy for an instance of uptime-kuma (yes, I’m into monitoring these times ) somewhere on the internet. I only get a white page.
Which looks completely the same as the config file generated by nethsec.
Any idea ?
I feel that the this reverse proxy is much more sensitive than the one of NS7. I never have had such difficulties to get it working in the past. Maybe it’s by chance, I don’t know.