...

...

目前,我们的 puma 应用服务器(为 rails 应用提供服务)前面安装了 nginx。最近,我们将“营销”页面分离到其自己的 repo 和应用中。

因此,从本质上讲,我们在 netlify 上通过应用程序部署提供静态内容,但是一旦用户登录,我们的 rails 应用程序就会接管。

有没有关于如何设置这个的建议?所以我们对这两个使用一个域名?最初我们考虑为静态内容创建一个子域名(如 (static.mydomain.com))并从那里提供所有内容,但这种方法有很大的缺点(域名和子域名没有相同的 SEO)。

nginx 能否进行某种 URL 重写,以便 netlify 上的静态应用出现在我们的域下?或者有人以不同的方式解决了这个问题?

更新:

我采纳了 Josh 的建议,最终得到了以下结果:

服务器 {

...

位置 ^~ /about { proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_passhttp://yourdeployment.netlify.com/about; } }

但是现在有一些资源(js/css/json)是 netlify 从 roor url 加载的http://yourdeployment.netlify.com/somescrip-someshavalue.sj我的 nginx 开始从 mydomain.com 获取。

有什么办法可以拦截这些吗?或者我必须手动添加重定向规则,就像为每个资源添加位置块一样?

答案1

如果您愿意,您应该能够通过使用proxy_passnginx 在路径上提供 netlify 应用程序。

像这样的配置应该可以工作:

server {
  # ...
  location ^~ /about {
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Real-IP $remote_addr;
    # remove the preceding "/about/" from the URL
    rewrite ^/about/(.*) /$1 break;
    # pass it on to the netlify app
    proxy_pass http://yourdeployment.netlify.com;
  }
}

路径可以是任何你想要的。如果你想使用子域名,你可以设置一个不同的server {}块,其中包含与server_name该子域名匹配的块和location / {}带有代理传递指令的块。

相关内容