Heroku-将前端和后端与Nginx分离在同一个域上



我有一个应用程序,有两个github repo,一个用于react,一个适用于rails应用程序。要求是所有的路由都应该去Rails服务器,除了以/cocatalog开头的路由应该去React应用程序。Rails应用服务器将在内部与React server进行通信。SSL是在Nginx级别上配置的。

我在heroku中创建了3个不同的应用程序:

  • Rails服务器应用程序
  • React服务器应用程序
  • Web服务器(Nginx(

我的nginx服务器配置看起来像:

upstream rails {
server $HEROKU_APP_rails_URL;
}
upstream react {
server $HEROKU_APP_react_URL;
}

server {
listen $PORT;
server_name *.xyz.com;
# large_client_header_buffers 4 32k;
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_pass          http://rails;
}
location /catalog {

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_pass          http://react;
}
}

在上面的配置中,我在Nginx上收到了HTTP400错误,它无法重定向请求。请告诉我我做错了什么。

终于解决了这个问题。。我的nginx配置看起来像

upstream upstream_app_a {
server app_a.herokuapp.com:443;
}
upstream upstream_app_b {
server app_b.herokuapp.com:443;
}
server {

listen $PORT;
location / {
set $upstream upstream_app_a;
proxy_pass https://$upstream;
proxy_ssl_name app_a.herokuapp.com;
proxy_set_header x-forwarded-host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host app_a.herokuapp.com;

} 
location /static {
set $upstream upstream_app_b;
proxy_pass https://$upstream/static;
proxy_set_header        Host app_b.herokuapp.com;
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;

}
location /product_catalog {
set $upstream upstream_app_b;
proxy_pass https://$upstream;
proxy_ssl_name app_b.herokuapp.com;
proxy_set_header x-forwarded-host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host app_b.herokuapp.com;
}
}

请确保您为标头设置了正确的值

proxy_set_header Host app_a.herokuapp.com

我们通过参考文章解决了这个问题

相关内容

  • 没有找到相关文章

最新更新