Apache2

在 apache 上使用 https 從子域訪問容器

  • May 27, 2021

基本上我有一個暴露在 8080 埠上的 docker 容器,它已經有了他的 SSL 證書。我想使用子域訪問該容器而不修改 url 並使用該容器證書。主域已經有他自己的證書,但我想使用 docker 容器之一。換句話說,我希望使用者使用 subdomain.example.com 使用 https 訪問 example.com:8080,但不讓他們知道該重定向。我這樣配置虛擬主機:

<VirtualHost subdomain.example.com:443>
       ServerAdmin admin@example.com
       ServerName subdomain.example.com
       ServerAlias subdomain.example.com
       ProxyRequests Off

       #ProxyPass / http://localhost:8080/
       <Location />
               ProxyPreserveHost On
               ProxyPass https://example.com:8080/
               ProxyPassReverse https:/example.com:8080/
       </Location>
    # Uncomment the line below if your site uses SSL.
    SSLProxyEngine On
</VirtualHost>

但我得到一個 ERR_SSL_PROTOCOL_ERROR。您對我如何實施它有什麼建議嗎?

它不起作用的原因是因為我需要為子域創建一個 SSL 證書(我使用 certbot 來製作它)。最終配置如下所示:

<VirtualHost subdomain.example.com:443>
       ServerAdmin admin@example.com
       ServerName subdomain.example.com
       ServerAlias subdomain.example.com
       ProxyRequests Off

       #ProxyPass / http://localhost:8080/
       <Location />
               ProxyPreserveHost On
               ProxyPass https://example.com:8080/
               ProxyPassReverse https://example.com:8080/
       </Location>
       # Uncomment the line below if your site uses SSL.
       SSLProxyEngine On
       SSLCertificateFile /etc/letsencrypt/live/subdomain.example.com/fullchain.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/subdomain.example.com/privkey.pem
       Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

引用自:https://serverfault.com/questions/1064781