[WIP/RFC v4 0/5] Support abstract Unix sockets
Alejandro Colomar
alx.manpages at gmail.com
Wed Aug 24 09:57:35 UTC 2022
And of course this one didn't make it to the list either. See this mail
for knowing how it works.
Cheers,
Alex
On 8/23/22 23:56, Alejandro Colomar wrote:
> Hi,
>
> On 8/23/22 23:18, Alejandro Colomar wrote:
>> Alejandro Colomar (5):
>> Optimize string copy in Unix sockets.
>> Use a minimal socklen.
>> Don't add a trailing '\0' for abstract Unix domain sockets.
>> Log abstract Unix domain sockets with a leading '@'.
>> Don't try to chmod(2) abstract Unix domain sockets.
>>
>> src/core/ngx_connection.c | 28 ++++++++++++++++------------
>> src/core/ngx_inet.c | 33 +++++++++++++++++++++++++++------
>> 2 files changed, 43 insertions(+), 18 deletions(-)
>>
>
> Here's how I tested the feature. It might help you understand how to
> use it, or help review it.
>
>
> I put a program listening on the sockets: IPv4, Unix, and abstract Unix.
> It was NGINX Unit built from source (since the patch set for
> supporting abstract sockets there was merged a few days ago).
>
> $ cat ~/etc/unitd/abs_nginx.json
> {
> "listeners": {
> "unix:@unitd.static.sock": { "pass": "routes" },
> "unix:/run/unit.static.sock": { "pass": "routes" },
> "*:8080": { "pass": "routes" }
> },
> "routes": [{
> "action": {
> "share": "/home/alx/srv/www/"
> }
> }]
> }
> $ sudo curl -X PUT -d @~/etc/unitd/abs_nginx.json --unix-sock
> /opt/local/unit/control.unit.sock localhost/config/
> {
> "success": "Reconfiguration done."
> }
>
>
> $ # Testing unitd:
> $
> $ curl localhost:8080
> idx
> $ curl --unix-sock /run/unit.static.sock localhost
> idx
> $ curl --abstract-unix-sock unitd.static.sock localhost
> idx
>
>
> The I configure nginx to talk to unit through the sockets, and also have
> an abstract socket for listening:
>
>
> $ cat /usr/local/nginx/conf/nginx.conf
> worker_processes 1;
>
> events {
> worker_connections 1024;
> }
>
> http {
> default_type application/octet-stream;
> sendfile on;
> keepalive_timeout 65;
>
> server {
> # replace NUL by the real null character with Ctrl+v Ctrl+j
> listen unix:NULnginx-in;
> listen 80;
>
> location /abs {
> # replace NUL by the real null character with Ctrl+v Ctrl+j
> proxy_pass http://unix:NULunitd.static.sock;
> }
>
> location /sock {
> proxy_pass http://unix:/run/unit.static.sock;
> }
>
> location /ip {
> proxy_pass http://localhost:8080/;
> }
> }
> }
> $ sudo /usr/local/nginx/sbin/nginx
>
>
> $ # Testing nginx:
> $
> $ ss -l | grep nginx-in
> u_str LISTEN 0 511 @nginx-in
> 23314 * 0
> $ curl --abstract-unix-sock nginx-in localhost/non-sock
> idx
> $ curl --abstract-unix-sock nginx-in localhost/sock
> idx
> $ curl --abstract-unix-sock nginx-in localhost/abs
> idx
>
>
>
> Cheers,
>
> Alex
>
>
--
Alejandro Colomar
<http://www.alejandro-colomar.es/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20220824/d5d07feb/attachment.bin>
More information about the nginx-devel
mailing list