我正在尝试在我的 Debian 10 (buster) 服务器上启动 GhostCMS 实例。我计划使用 apache (v2.4.38) 反向代理来执行此操作。对于 Ghost 设置,我使用了 ghost-cli,如文档中所述。(ghost install && ghost start
)它或多或少运行良好(除了 Nginx 配置部分以及 LetsEncrypt 部分 - 我后来手动启动了它)
我的 Apache HTTP 配置如下所示:
<VirtualHost *:80>
DocumentRoot /var/www/ghost
ServerName blog.domain.xyz
ServerAlias www.blog.domain.xyz
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / https://127.0.0.1:2368/
ProxyPassReverse / https://127.0.0.1:2368/
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我的 Apache HTTPS 配置如下:
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /var/www/ghost
ServerName blog.domain.xyz
ServerAlias www.blog.domain.xyz
ProxyPreserveHost On
ProxyRequests Off
SSLEngine On
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass / https://127.0.0.1:2368/
ProxyPassReverse / https://127.0.0.1:2368/
ErrorLog ${APACHE_LOG_DIR}/blog.domain.xyz_error.log
CustomLog ${APACHE_LOG_DIR}/blog.domain.xyz_access.log combined
RewriteCond %{SERVER_NAME} =blog.domain.xyz [OR]
RewriteCond %{SERVER_NAME} =www.blog.domain.xyz
SSLCertificateFile /etc/letsencrypt/live/blog.domain.xyz/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/blog.domain.xyz/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
仅供参考:所有页面均使用 a2ensite 配置名称启用,并且 ghost 仍在其默认端口 (localhost:2368) 上运行
每当我尝试加载页面时,都会收到 HTTP 500 代理错误,原因如下:Error during SSL Handshake with remote server
我已经尝试了一些教程,例如https://www.codersbistro.com/blog/setting-up-ghost-with-apache-http-server/但他们还是无法帮助我。
希望你们中的一些人可以给我提供一个不错的提示:-)
答案1
我已经尝试了一些教程,例如https://www.codersbistro.com/blog/setting-up-ghost-with-apache-http-server/但他们还是无法帮助我。
本教程包含以下部分:
ProxyPass / http://localhost:2368/
ProxyPassReverse / http://localhost:2368/
与此相反,您的配置包括以下内容
ProxyPass / https://127.0.0.1:2368/
ProxyPassReverse / https://127.0.0.1:2368/
注意到区别了吗?您尝试使用 https 访问端口 2368 上的内部服务器,而本教程中则使用 http。后者可能是正确的。请注意,https 处理由 Apache 完成,而不是由内部 CMS 服务器完成,与 Apache 相反,内部 CMS 服务器不应从主机外部访问。