Apache 配置为前端 https + 后端 http

Apache 配置为前端 https + 后端 http

我在 Linode 上运行了一台服务器,它有 3 个子域。每个子域都是一个不同的 Angular 8 应用程序,并且有自己的后端。

xyz.example.com

  • xyz.example.com:8080

abc.example.com

  • abc.example.com:8081

pqr.example.com

  • pqr.example.com:8082

它们三个都运行良好,但是,它是在 http 上,并且“不安全的连接”图标一直存在。

我使用“certbot --apache”安装了 SSL 证书。前端没有问题,但是它不再与后端通信。

我一直收到“net::ERR_SSL_PROTOCOL_ERROR”错误。

经过一些搜索,我认为将 apache 配置为反向代理运行可能会有所帮助(但不确定)。

这是我的 xyz.example.com.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName app.nordy.com.br
ServerAlias www.app.nordy.com.br
DocumentRoot /var/www/html/app.nordy.com.br/dist
<Directory /var/www/html/app.nordy.com.br/dist>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.app.nordy.com.br [OR]
RewriteCond %{SERVER_NAME} =app.nordy.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

这是我的默认 ssl.conf

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on
    SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>

 </VirtualHost>
 </IfModule>

有人能告诉我该怎么做或者给我指明正确的方向吗?我该怎么做才能让事情恢复正常?谢谢。

答案1

您的 http 虚拟主机只会重定向到 https。是吗?您可以使用以下方法轻松完成此操作

<VirtualHost *:80>
  ServerName abc.example.com
  ServerAlias www.abc.example.com
  Redirect permanent / https://abc.example.com/
</VirtualHost>

现在,在您的 https 虚拟主机中,您需要代理到后端的连接。例如

<VirtualHost *:443>
  ServerName abc.example.com
  ServerAlias www.abc.example.com
  SSLEngine on
  ProxyPass        / http://abc.example.com:8081
  ProxyPassReverse / http://abc.example.com:8081
</VirtualHost>

代理通行证反向代理密码

相关内容