如何为Supabase和t-rex服务配置TLS反向代理实现HTTPS访问
嘿,我来帮你搞定这个问题!你已经成功用Apache给Supabase配置了HTTPS反向代理,其实给t-rex加上HTTPS访问的思路完全相通,咱们一步步来捋清楚:
首先先解答你心里的疑惑:HTTPS默认用443端口没错,但这并不意味着你只能用443——Apache可以监听任意多个SSL端口,只要你配置好对应的反向代理规则就行,刚好契合你想用https://192.0.2.1:8000和https://192.0.2.1:6767分别访问两个服务的需求。
具体配置步骤
确认Apache必要模块已启用
你之前配置Supabase的时候应该已经开了这些模块,但保险起见再检查下:a2enmod ssl proxy proxy_http执行完后重启Apache生效:
systemctl restart apache2修改Apache监听端口
打开Apache的端口配置文件(一般是/etc/apache2/ports.conf),添加对8000和6767端口的SSL监听规则:Listen 192.0.2.1:8000 https Listen 192.0.2.1:6767 https如果你想让VPS的所有IP都监听这两个端口,也可以简化成
Listen 8000 https和Listen 6767 https。添加t-rex的反向代理VirtualHost
找到你之前配置Supabase的Apache站点文件(比如/etc/apache2/sites-available/your-ssl-config.conf),在现有配置下面新增一个针对t-rex的VirtualHost块:# Supabase的HTTPS反向代理(你原来的配置可以保留或调整成下面的格式) <VirtualHost 192.0.2.1:8000> ServerName 192.0.2.1 SSLEngine on SSLProxyEngine On SSLCertificateFile /etc/ssl/certificate.crt SSLCertificateKeyFile /etc/ssl/private/private.key SSLCertificateChainFile /etc/ssl/ca_bundle.crt ProxyRequests Off ProxyPreserveHost On ProxyPass / http://192.0.2.1:8000/ ProxyPassReverse / http://192.0.2.1:8000/ </VirtualHost> # t-rex的HTTPS反向代理 <VirtualHost 192.0.2.1:6767> ServerName 192.0.2.1 SSLEngine on SSLProxyEngine On SSLCertificateFile /etc/ssl/certificate.crt SSLCertificateKeyFile /etc/ssl/private/private.key SSLCertificateChainFile /etc/ssl/ca_bundle.crt ProxyRequests Off ProxyPreserveHost On ProxyPass / http://192.0.2.1:6767/ ProxyPassReverse / http://192.0.2.1:6767/ </VirtualHost>验证配置并重启Apache
先检查配置文件有没有语法错误:apache2ctl configtest如果输出
Syntax OK,就重启Apache让配置生效:systemctl restart apache2开放防火墙端口
别忘了给VPS的防火墙开放8000和6767的TCP端口,不然外部访问不了。比如用ufw的话:ufw allow 8000/tcp ufw allow 6767/tcp ufw reload
原理说明
当用户访问https://192.0.2.1:8000时,Apache会在8000端口接收SSL加密请求,解密后把请求转发到你本地的Supabase HTTP服务(http://192.0.2.1:8000),然后把服务返回的响应重新加密后发送给用户——这样就实现了HTTPS访问。t-rex的逻辑完全一样,只是端口对应6767而已。
另外提醒下:因为你用的是自签名证书,用户访问时浏览器会弹出“不安全”的提示,这是正常现象,除非你换成CA签发的可信证书。
备注:内容来源于stack exchange,提问作者SERG

