即使在ssl设置后,https也不提供内容,但是http可以

时间:2018-07-12 05:01:49

标签: apache docker redirect webserver docker-machine

我有一个Docker容器,在RHEL 7服务器上的8000端口上运行Jupyter笔记本,当我通过http://server-name:8000访问它时,这似乎很好。

但是,当我尝试在apache网络服务器上配置ssl证书时,https上没有提供内容

我的配置文件如下所示。

Listen 443 https
<VirtualHost *:443>  
    ServerName server.com
    SSLEngine on
    SSLCertificateFile /path/to/cerfile.cer
    SSLCertificateKeyFile /path/to/Keyfile.key
    ProxyPass / https://server.com:8000/tree
    ProxyPassReverse / https://server.com/8000/tree                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
</VirtualHost>
  

我无法单独访问https://server.com:8000/tree,   但是我可以访问http://server.com:8000/tree

不是我的证书不起作用,当我在上述配置中删除ProxyPass时,我可以访问https://server.com

<VirtualHost *:443>  
    ServerName server.com
    SSLEngine on
    SSLCertificateFile /path/to/cerfile.cer
    SSLCertificateKeyFile /path/to/Keyfile.key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
</VirtualHost>

我不确定为什么我的内容没有在https下加载,有人可以向我解释一下吗?

尝试到达https://server-name:8000/tree

时收到错误
  

无法访问此网站的服务器名称花费了太长时间   响应。试试:

     

检查连接检查代理和防火墙   ERR_TIMED_OUT

2 个答案:

答案 0 :(得分:0)

根据您的配置文件,您的反向代理正在侦听端口443而不是8080,这就是为什么那里存在proxypass时无法通过8080访问应用程序的原因。如果您想通过https访问8080端口的应用,请尝试以下conf:

<VirtualHost *:8000>  
    ServerName server.com
    SSLEngine on
    SSLCertificateFile /path/to/cerfile.cer
    SSLCertificateKeyFile /path/to/Keyfile.key
    ProxyPass / https://server.com:8000/tree
    ProxyPassReverse / https://server.com/8000/tree                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
</VirtualHost>

答案 1 :(得分:0)

这可以解决问题,似乎Jupyter具有标准的代理配置。 Reference:

ProxyPreserveHost On
ProxyPass /api/kernels/ ws://server:8000/api/kernels/
ProxyPassReverse /api/kernels https://server:8000/api/kernels/
ProxyPass / https://server:8000/
ProxyPassReverse / https://server:8000/