title: How to enable IPv6 in applications --- pub_date: 2019-09-26 --- author: Team ungleich --- twitter_handle: ungleich --- abstract: New to IPv6? Wondering how to enable IPv6 in your favorite application? Then this blog entry is for you. --- body: In this blog article you'll find some hints on how to enable IPv6 for various applications. ## How to enable IPv6 in nginx The web server [nginx](https://nginx.org/) by default only listens to IPv4 if you use the standard `listen *:80;` directive. To enable IPv6, use `listen [::]:80;`. So for a dual stack server, your configuration could look as follows: ``` server { listen *:80; listen [::]:80; ... } ``` ## How to enable IPv6 in HAProxy There are various interesting configuration options in [HAProxy](https://www.haproxy.org/) related to IPv6. Let's have a look at each of them! To enable IPv6 transport for the local logging, use `log [::1]` in the global section: ``` global log [::1] local2 ... ``` If you want a frontend to listen to either IPv6 or IPv4 only, you can use the `ipv6@` prefix as follows: ``` # IPv6 http frontend frontend httpipv6 bind ipv6@:80 mode http # IPv4 http frontend frontend httpipv4 bind ipv4@:80 mode http ... ``` If you want to connect to the backends only via a specific protocol, we can use the prefix syntax there as well: ``` backend httpipv4 mode http use-server ungleich.ch if { hdr(host) -i ungleich.ch } server ungleich.ch ipv6@ungleich.ch ... ``` To proxy IPv6 requests to IPv4 only [twitter](https://twitter.com), you could use the following configuration: ``` # ipv6 https frontend httpsipv6 bind ipv6@:443 mode tcp option tcplog tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } default_backend httpsipv6 backend httpsipv6 mode tcp use-server twitter.com if { req_ssl_sni -i twitter.com } server twitter.com ipv4@twitter.com ``` ## How to enable IPv6 in Lektor The static CMS [lektor](https://www.getlektor.com/) by default serves on IPv4. To serve on IPv6 localhost use `-h ::1`, to be globally reachable use `-h ::`. ``` # Serve on IPv6 localhost % lektor serve -h ::1 # Serve on IPv6 (globally reachable) % lektor serve -h :: ``` ## Other applications If you know about other applications or want to enhance one of our configuration, we invite you to join the [IPv6 chat](https://IPv6.chat) or [write to us on Twitter](https://twitter.com/ungleich).