【问题标题】:nginx responds to HTTPS but not HTTPnginx 响应 HTTPS 但不响应 HTTP
【发布时间】:2018-12-01 12:20:24
【问题描述】:

我正在使用 dockerized Nextcloud,如下所示:https://github.com/nextcloud/docker/tree/master/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm

我使用映射到 12345 的端口 80 和映射到 12346 的端口 443 进行设置。当我转到 https://mycloud.example.com:12346 时,我收到自签名证书提示,但除此之外一切都很好,我看到了 NextCloud Web UI。但是当我转到http://mycloud.example.com:12345 nginx(proxy 容器)时,会出现错误“503 服务暂时不可用”。该错误也出现在proxy 的日志中。

如何诊断问题?为什么 HTTPS 有效,但 HTTP 无效?

【问题讨论】:

  • 我的猜测是它被专门配置为不能通过非安全 http 访问。您必须在文档中四处寻找配置它的方法,或者只是在您的 IDE 中打开源代码并逐行调试请求...

标签: docker nginx http-status-code-503 nextcloud


【解决方案1】:

您能否提供启动 nextcloud 或 docker-compose 文件的 docker 命令?

诊断与 docker stuff 一样:获取当前运行容器的 id

docker ps

然后查看日志

docker logs [id or name of your container] docker-compose logs [name of your service]

在容器中连接

docker exec -ti [id or name of your container] [bash or ash if alpine based container]

那里读取了涉及的 nginx conf 文件。在你的情况下,我会检查从 http 到 https 的重定向,很可能是下面这样,没有为 https 指定特定端口,因此端口 443,因此不起作用

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;    <======== no port = 443
}

server {
       listen         443 ssl;
       server_name    my.domain.com;
       # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000" always; 

       [....]
}

【讨论】:

  • 嗯,我已经链接了一个docker-compose文件,所以命令当然是docker-compose up。
  • @Wassinger 我对链接文件不好。关于调试,正如我所说,如果您使用非常规端口(12345 和 12346),问题很可能是默认重定向到 443 而不是 12346 的 HTTP 行为。docker-compose exec proxy "cat /etc/nginx/vhost.d/*" 之类的东西应该转储 nginx vhost 配置来检查。如果你真的想github.com/jwilder/nginx-proxy/search?q=WEB_PORTS,这里是 jwilder 摆弄端口的例子
  • 似乎/etc/nginx/vhost.d/ 对代理是空的
  • 我也确实发现在/etc/nginx/conf.d/default.conf/ 中有一个端口 80 没有 443 的块,就像你在答案末尾提到的那样。另一个443块也包含location / {proxy_pass https://mycloud.example.com;},不知道这是否相关?
  • 如果我没记错 jwilder 的 dockergen 脚本未能正确生成 conf,则空块是。应该有一个名为 [your_VIRTUAL_HOST].conf 的文件。原因可能在于代理日志,检查docker-compose logs proxy
猜你喜欢
  • 2020-07-22
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多