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