Hello everybody, I’m on 6.1 and trying to configure NGINX.
I’m posting this issue here because it may be peculiar to OpenBSD but I know it
could be more appropriate to post it on an NGINX specific mailing list.
Please let me know if I’m in topic.
I successfully installed NGINX (`$ doas pkg_add nginx`) and managed to setup a
pure static vhost:
/etc/nginx/nginx.conf:
```
# ...
server {
listen 80;
server_name myapp.com;
access_log /var/www/apps/my_app/logs/access.log;
error_log /var/www/apps/my_app/logs/error.log;
root /var/www/apps/my_app/current;
}
# ...
```
And it works just fine.
Then I tried to implement a reverse proxy with the `proxy_pass` directive
toward a local Ruby-based application server (Puma, booting a Ruby app).
If I define a proxy_pass toward a TCP port then the requests correctly reach
the application server but when I try to migrate the setup into a unix socket
binding, then I get an error due to NGINX being chrooted.
/etc/nginx/nginx.conf:
```
# ...
server {
server_name myapp.com;
access_log /var/www/apps/my_app/logs/access.log;
error_log /var/www/apps/my_app/logs/error.log;
root /var/www/apps/my_app/current;
location / {
proxy_pass http://unix:/var/www/apps/my_app/application.socket;
}
}
# ...
```
/var/log/nginx/error.log:
```
2017/08/05 23:17:34 [crit] 58554#0: *5 connect() to
unix:/var/www/apps/my_app/application.socket failed (2: No such file or
directory) while connecting to upstream, client: 192.168.1.3, server:
myapp.com, request: "GET / HTTP/1.1", upstream:
"http://unix:/var/www/apps/my_app/application.socket:/", host: “myapp.com"
```
```
$ ls -al /var/www
drwxr-xr-x 4 olistik olistik 512 Aug 3 18:17 apps
drwxr-xr-x 3 www www 512 Jul 16 22:48 htdocs
drwxr-xr-x 2 root daemon 512 Apr 1 21:38 run
drwx------ 2 www www 512 Jul 15 20:51 tmp
```
This is how I start the application server:
```
$ bundle exec puma --debug -v -e production -b
unix:///var/www/apps/my_app/application.socket -v
Puma starting in single mode...
* Version 3.9.1 (ruby 2.4.1-p111), codename: Private Caller
* Min threads: 0, max threads: 16
* Environment: production
* Listening on unix:///var/www/apps/my_app/application.socket
Use Ctrl-C to stop
```
The only way I found to work around this issue is to disable NGINX chroot:
```
$ doas rcctl enable nginx
$ doas rcctl set nginx flags -u
$ doas rcctl restart nginx
```
But it’s not ideal to lose the isolation chroot gives.
Do you have any suggestions on how to implement a unix socket connection with
NGINX chroot enabled?
Thank in advance,
olistik