我有一个 VPS,在不同的端口上有 2 个服务,并且为 IP 提供自签名 SSL。端口是 Supabase 8000
,端口是 t-rex 服务6767
。我需要在 HTTP 上同时使用它们,例如https://192.0.2.1:8000
Supabase 和https://192.0.2.1:6767
t-rex。
我使用 HTTP,但如何使用 HTTP年代?我尝试使用 Apache2,它可以工作。但我不知道如何添加6767
?据我所知,HTTPS 在端口上443
。
<VirtualHost 192.0.2.1:443>
ServerName 192.0.2.1:8000
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.0.2.1:8000/
ProxyPassReverse / http://192.0.2.1:8000/
</VirtualHost>
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCertificateChainFile /etc/ssl/ca_bundle.crt
如果 Apache2 无法做到这一点,那么 NGINX 也可以。
答案1
您ProxyPass
对端口上的 Supabase 后端服务的指令8000
表明这些服务已在同一 IP 地址上侦听这些端口;我假设端口上的 t-rex 服务器也是如此6767
。显然,两个服务不能侦听同一个端口。
ProxyPass / http://192.0.2.1:8000/
ProxyPassReverse / http://192.0.2.1:8000/
您可以将非 TLS 服务绑定到本地环回然后添加反向代理在公共 IP 地址上提供 TLS。
- 为了本地运行 Supabase:
const SUPABASE_URL = 'http://localhost:8000'
- 为了霸王龙:
t_rex serve --bind 127.0.0.1 --port 6767
现在您可以使用Apache 作为反向代理和:
Listen 192.0.2.1:8000
Listen 192.0.2.1:6767
<VirtualHost 192.0.2.1:8000>
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>
<VirtualHost 192.0.2.1:6767>
SSLEngine on
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
ProxyPass / http://127.0.0.1:6767/
ProxyPassReverse / http://127.0.0.1:6767/
</VirtualHost>
你不需要SSLProxyEngine On
因为后端没有使用 TLS。