nginx:http 到 https 在 Chrome 上不起作用

nginx:http 到 https 在 Chrome 上不起作用

我有这个 nginx 配置来将 http 重定向到 https:

# http redirects to https
server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    ...
}

它在 Firefox 上正常运行。如果我添加/etc/hosts如下条目:

127.0.0.1 my-custom-domain.com为了确保我拥有从未使用过的域名,如果我在 Firefox 中输入my-custom-domain.com,我会得到以下信息:

在此处输入图片描述

按预期工作,它重定向到 https。

但如果我在 Chrome 上执行同样操作,则会得到以下结果:

在此处输入图片描述

https仅当我明确输入时,Chrome 才会打开一个https://my-custom-domain.com。不确定为什么它在 Chrome 上的行为有所不同。

看起来这个问题与 nginx docker 镜像有关。我无法使用本地安装的 nginx 重现此问题。虽然带有nginx:1.18.0、标签nginx:1.23.0的nginx 镜像nginx:1.23.0-alpine都存在同样的问题。

PS 我读到有人说server_name不能_有具体的名字,但即使我输入sever_name my-custom-domain.com;

PSS 我正在使用1.23.0-alpinenginx docker 镜像。

更新

做过curl -I my-custom-domain.com

在非 docker nginx 上,我得到:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 15 Jul 2022 12:17:50 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://my-custom-domain.com/

在docker nginx上我得到:

curl: (7) Failed to connect to my-custom-domain.com port 80: Connection refused

答案1

所以问题很简单。Nginx 工作正常,但我没有80从 docker 公开端口,只有443

基本上已添加80:80端口,现在 chrome 也将其重定向(在docker-compose.yml):

ports:
  - 443:443
  - 80:80

相关内容