|      1cwbsw      2020-02-13 15:28:25 +08:00 systemd.socket BindIPv6Only | 
|  |      2dndx      2020-02-13 16:05:05 +08:00 https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses Linux 上需要 socket 开 `IPV6_V6ONLY` flag。不同软件不一样,对于 Nginx 可以 `listen [::]:8000 ipv6only=on;` 开启这个 flag。 | 
|      3programV2 OP @dndx  @cwbsw 谢谢两位指点. 就是说如果没有设置 BindIPv6Only 这个 tag 默认就是同时监听 ipv6 和 ipv4 端口吗? 另外还有一个疑问就是我用的容器,镜像中虽然映射了 80:80 和 443:443 端口, 但是我 nginx.conf 配置文件中只设置 listen 443; 为什么 80 端口还能访问( http 和 tcping 都 ok)?? docker-compose.yml 设置如下, version: "3" services: nginx: image: nginx:$NGINX_TAG container_name: "${PROJECT_NAME}_nginx" ports: - 80:80 -443:443 | 
|  |      4dndx      2020-02-13 16:40:55 +08:00  1 不是同时监听,是内核默认会自动把 v4 过来的地址转换成特殊的 v6 地址。本意是为了方便开发双栈软件,这样软件只要支持 v6 一次就 v4 v6 通吃了。 | 
|      5programV2 OP @dndx 谢谢 V 友, 有两个疑问:1.刚进 nginx 容器内执行 netstat -tnlp, 发现 v4 的 80 和 443 都在监听, 我 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢??  2.内核默认会把 v4 过来的地址转换成特殊的 v6 地址, 但是我 nginx 容器内只监听 v4 的地址,那是不是说系统还得把这个特殊的 v6 地址再次转换成 v4 地址才能与容器内的 nginx 服务通信? | 
|  |      6dndx      2020-02-13 17:00:30 +08:00 via iPhone listen 443 本来就是两个都监听的。你试试 listen [::]:443 ipv6only=on; 就只监听 v6 了。 | 
|      7programV2 OP @dndx 谢谢!但是我进 nginx 容器内执行 netstat -tnlp, 只有 tcp 的记录,没看到 tcp6 的记录, 这是为什么?  Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.11:42303 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1/nginx: master pro tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN | 
|  |      8dndx      2020-02-13 17:15:28 +08:00 被 Docker 覆盖了?检查一下 `nginx.conf` 看看具体是怎么写的。如果正确可以 reload 一下确认使用的是对的配置。 | 
|      9programV2 OP @dndx 检查过了, 并且 docker 所有容器已经重启过了,  还有我进 nginx 容器内执行 netstat -tnlp, 发现 v4 的 80 和 443 都在监听, 但是我 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢?? nginx.conf` server { listen 443; ssl on; ssl_certificate /dir | 
|  |      10dndx      2020-02-13 19:12:40 +08:00 说了很多次了,要写成 `listen [::]:443`,`[::]:` 部分不能省。 | 
|      11programV2 OP @programV2  抱歉,是不是我的表达有问题? 你就的`listen [::]:443`不是监听 V6 的 443 端口吗? 但我的问题是 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢??? | 
|      12programV2 OP @dndx 抱歉,请问你说的" listen [::]:443 "是监听 V6 的 443 端口吗?" listen 443 本来就是两个都监听的"意思是 v4 和 v6 的 443 都监听 ? 但我的问题是 nginx.conf 配置文件中只设置了 listen 443;为什么还会监听 80 的端口呢??? | 
|      13iUnix      2020-02-16 09:51:09 +08:00 via Android ps -ef | grep nginx |