我在 Django 支持的项目中使用 docker,无法通过生产环境中的请求库访问 https://api.cognitive.microsofttranslator.com。请求库永远“挂起”在 SSL 握手上。
所以我决定尝试一下curl。同样的问题: 呼唤
curl https://api.cognitive.microsofttranslator.com
永远挂起。
如果我在本地计算机上运行这个容器,并运行curl =>一切正常。 如果我直接在主机上运行curl命令,它也可以正常工作。
知道可能出了什么问题或者我可以如何调试这个问题吗?
我也尝试过例如
curl https://www.google.com
curl https://www.bing.com
这有效。这只是 microsofttranslator.com 页面无法正常工作。
编辑:在容器中运行此命令会导致以下输出:
curl --verbose https://api.cognitive.microsofttranslator.com
* Trying 20.50.1.17:443...
* Connected to api.cognitive.microsofttranslator.com (20.50.1.17) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* Recv failure: Connection reset by peer
* OpenSSL SSL_connect: Connection reset by peer in connection to api.cognitive.microsofttranslator.com:443
* Closing connection 0
curl: (35) Recv failure: Connection reset by peer
我发现问题了。
主机系统使用 MTU=1450。 我的 docker compose 没有自动应用这个值。所以设置为MTU=1500
我必须手动将网络设置为 MTU=1450 值:
networks:
internal_network:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1450