gpt4 book ai didi

docker - Nginx HTTP 未重定向到 HTTPS 400 错误请求 "The plain HTTP request was sent to HTTPS port"

转载 作者:行者123 更新时间:2023-12-01 19:23:08 26 4
gpt4 key购买 nike

我正在 docker 中运行 nginx。 HTTPS 工作正常,但是当我显式发出 HTTP 请求时,出现以下错误

400 错误请求纯 HTTP 请求已发送到 HTTPS 端口

nginx.conf如下

worker_processes auto ;          
events {}

http {

include /etc/nginx/mime.types;

access_log /var/log/nginx/main.access.log;

server {
listen 80;
location / {
return 301 https://localhost:3000$request_uri;
}

}

server {
listen 443 ssl;
server_name localhost:3000;
root /var/www/html;

ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

location / {
try_files $uri /index.html;
}

}

}

我使用

运行这个容器
docker run -p 3000:443 -it -d --name nginxtest nginx-test

并出现以下错误

docker文件如下

FROM nginx:latest
COPY ./build /var/www/html
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./ssl /etc/nginx/ssl
EXPOSE 443
CMD [ "nginx","-g","daemon off;" ]

奇怪的是,有时它工作得很好,突然间它停止工作,甚至如果我重新创建容器也无法工作。

甚至尝试执行以下操作。还是没有运气

 server {    
listen 80;
server_name localhost:3000
return 301 https://localhost:3000$request_uri;
}

当我运行以下 docker 命令时,出现了另一件奇怪的事情

docker run -p 3000:443 -p 3001:80 -it -d --name nginxtest nginx-test

然后转到 localhost:3001 它会将我重定向到 https 很好,但其他事情确实会中断。抱歉问了这么长的问题

最佳答案

将以下指令放入监听端口 443 的服务器 block 中。

error_page 497 https://$host:$server_port$request_uri;

该指令意味着当“普通 HTTP 请求发送到 HTTPS 端口”发生时,将其重定向到当前主机名、端口和 URI 的 https 版本。

有点老套,但有效。

关于docker - Nginx HTTP 未重定向到 HTTPS 400 错误请求 "The plain HTTP request was sent to HTTPS port",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55027582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com