Firebase 自定义域"需要设置"与 nginx 代理服务器



我有一个前端应用程序托管在Firebase托管。我也有一个后端API运行在数字海洋液滴上。我在水滴上安装了nginx,它将重定向到前端应用程序或后端API。我的nginx配置文件如下所示:

server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name myapp.com *.myapp.com;
ssl_certificate           /etc/nginx/cert.crt;
ssl_certificate_key       /etc/nginx/cert.key;
ssl on;
ssl_session_cache  builtin:1000  shared:SSL:10m;
ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header        X-Forwarded-Proto $scheme;
proxy_pass          http://150.101.64.193:80;
proxy_read_timeout  90;
proxy_redirect      http://150.101.64.193:80  https://myapp.com;
}
location /api/ {
proxy_pass http://localhost:5000;
proxy_read_timeout 90;
proxy_redirect http://localhost:5000 https://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}

Firebase告诉我将两个TXT记录复制到我的DNS设置中,但只有当我想将域名映射到前端应用程序时才能使其工作。相反,我的DNS设置将我的域名映射到水滴的IP地址。然后,水滴上的代理应该根据所传递的路由将请求转发到前端或后端。例如

www.myapp.com/blah重定向到Firebase应用程序www.myapp.com/api/blah重定向到API

目前Firebase报告我的自定义域需要设置,因为没有相应的TXT记录。这是我第一次尝试部署一个web应用程序,所以我不确定这个设置是否会工作。

如果您正在使用NGINX代理流量到Firebase Hosting站点,您可能希望将该流量代理到共享域,例如<site>.web.app,而不是重新代理回服务流量的相同域。

我们不建议把代理放在Firebase Hosting的前面,因为这会破坏Firebase Hosting的全局CDN的目的,但它应该可以工作。

你也可以使用Cloud Functions或Cloud Run直接构建你的API接口,而不是代理到NGINX后端。

最新更新