Docker启动Nginx后浏览器访问返回400错误如何解决?
Nginx Docker容器400错误问题解决
问题根源
日志中的\x16\x03\x01等二进制字符是TLS握手请求标识,说明你用HTTPS协议访问了仅支持HTTP的8080端口。Nginx官方镜像默认在容器内80端口提供HTTP服务,你映射到本地8080后,若浏览器输入https://localhost:8080,会发送TLS加密请求给HTTP服务,触发400错误。
快速解决
直接在浏览器地址栏输入:http://localhost:8080(明确使用HTTP协议),即可正常加载Nginx默认页面。
如需HTTPS访问的配置步骤
如果需要通过HTTPS访问服务,需为Nginx配置SSL证书:
- 准备SSL证书(可生成自签名证书或使用权威机构颁发的证书)
- 创建自定义Nginx配置文件,添加HTTPS监听配置示例:
server { listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/certs/cert.pem; ssl_certificate_key /etc/nginx/certs/key.pem; location / { root /usr/share/nginx/html; index index.html index.htm; } } - 启动容器时挂载配置文件和证书目录,同时映射443端口:
之后即可通过docker run -p 8080:80 -p 8443:443 \ -v /本地路径/nginx.conf:/etc/nginx/nginx.conf \ -v /本地路径/certs:/etc/nginx/certs \ nginxhttps://localhost:8443访问。
验证方式
用curl测试HTTP访问是否正常:
curl http://localhost:8080
返回Nginx默认页面的HTML代码即表示服务正常。
内容的提问来源于stack exchange,提问作者machadoah
相关产品推荐
相关产品推荐

