serving files from /proc

J Carter jordanc.carter at outlook.com
Wed Dec 13 02:45:54 UTC 2023


Hello,

On Tue, 12 Dec 2023 16:17:11 +0100
Jérôme Loyet <ml at fatbsd.com> wrote:

> Hello,
> 
> I'm trying to serve some files from /proc but nginx return a 0 bytes
> content because the file size of many files in /proc/ tree is simply 0 by
> design.

That is correct, reading Virtual File System files would require special 
handling compared to regular files. Nginx doesn't appear to have this.

> 
> here is my sample conf file:
> ...
> location = /route {
>   root /proc/net;
> }
> 
> and the result of the corresponding curl:
> > GET /route HTTP/1.1
> > Host: 172.16.0.3:1513
> > User-Agent: curl/7.68.0
> > Accept: */*
> >  
> * Mark bundle as not supporting multiuse
> < HTTP/1.1 200 OK
> < Server: nginx/1.23.1
> < Date: Tue, 12 Dec 2023 15:08:00 GMT
> < Content-Type: text/plain
> < Content-Length: 0
> < Last-Modified: Tue, 12 Dec 2023 15:08:00 GMT
> < Connection: keep-alive
> < ETag: "65787750-0"
> < Accept-Ranges: bytes
> 
> is there a simple way to configure nginx to return the cotent of
> /proc/net/route or any other file in /proc ?

For a solution entirely within nginx, you can use njs to serve /proc/net/route.

<Example of how IO with njs can be done here>
https://github.com/nginx/njs-examples?tab=readme-ov-file#file-io-misc-file-io

Njs does handle VFS/zero sized files in a special way. If the file is zero
sized, it will read up to 4096 bytes from the file.

<as seen here>
https://github.com/nginx/njs/blob/2c937050a4589bbc196db334fef22e6de772dd49/external/njs_fs_module.c#L2732


> thanks
> regards
> ++ Jerome


More information about the nginx mailing list