IPv6 to IPv4
Sergey Kandaurov
pluknet at nginx.com
Mon Dec 16 10:36:49 UTC 2019
> On 16 Dec 2019, at 12:14, Rhys Ferris <rhys.j.ferris at gmail.com> wrote:
>
> hi, sorry for the extreme delay... i was lazy.
> Here's what happens when I connect to my server on IPv6 (mind you, everything works fine if I remove the AAAA record):
> 2019/12/15 22:53:44 [crit] 15662#15662: *2225 bind(<my server's IPv6 address here>) failed (97: Address family not supported by protocol) while connecting to upstream, client: <my desktop's IPv6 address here>, server: domain.net, request: "GET /sonarr/plugins/bower_components/bootstrap-select/bootstrap-select.min.js HTTP/2.0", upstream:
> "http://192.168.136.135:8989/sonarr/plugins/bower_components/boots
> trap-select/bootstrap-select.min.js"
> , host: "domain.net", referrer: "https://domain.net/sonarr/"
>
> [...]
>
> The way I'm reading it is that it is trying to connect from IPv6 source interface to IPv4 destination interface, and well, that obviously doesn't work. Here's my configs
> nginx.conf
>
Your analysis looks correct (see below).
> [..]
>
> excerpt of domain.net.conf
>
>
> ##Orgv2 Let's encrypt vhost - Non SSL
> ##vhost_template_v: v1.0.2
> ##author: elmerfdz
>
> ##
> http://domain.net redirects to https://domain.net
>
> # include config/domain.net/http_server.conf;
> upstream sonarr-upstream { server 192.168.136.135:8989; }
> upstream radarr-upstream { server 192.168.136.135:7878; }
> upstream tautulli-upstream { server 192.168.136.141:8181; }
> upstream webmin-upstream { server 192.168.136.130:10000; }
>
> ## Serves
> https://www.domain.net
>
> server {
> listen 443 ssl http2; listen [::]:443 ssl http2;
> server_name domain.net;
> include /etc/nginx/config/domain.net/ssl.conf; #edit path to your certs
> root /var/www/domain.net/html;
> index index.php index.html index.htm index.nginx-debian.html;
> location ~ /auth-(.*) { rewrite ^/auth-(.*) /api/?v1/auth&group=$1; } #Org Auth
> error_page 400 401 403 404 405 408 500 502 503 504 /?error=$status; #error page
> location / {try_files $uri $uri/ =404;}
> include config/domain.net/phpblock.conf; #PHP Block
> location /sonarr/ {
> proxy_pass
> http://sonarr-upstream
> ;
> include config/domain.net/proxy.conf;
> error_page 400 401 403 404 405 408 500 502 503 504 /?error=$status; #error page
> }
> ssl_certificate /etc/letsencrypt/live/domain.net/fullchain.pem; # managed by Certbot
> ssl_certificate_key /etc/letsencrypt/live/domain.net/privkey.pem; # managed by Certbot
>
>
> And on the off chance you need it, heres proxy.conf
>
> client_max_body_size 10m;
> client_body_buffer_size 128k;
> proxy_bind $server_addr;
Try removing this directive, that's likely the culprit.
Your backend addresses are IPv4, while you're trying binding IPv6 ($server_addr),
hence address family mismatch. That's not going to work.
--
Sergey Kandaurov
More information about the nginx
mailing list