Nginx-对Heroku的代理请求

mrv*_*tin 3 proxy nginx heroku

我正在尝试设置Nginx代理,它将所有传入的请求代理到Heroku应用。这个想法是为了让我的SaaS应用程序的客户能够使用自定义域。客户将为CNAME我的代理设置一个,它将设置Host标题并将请求代理到Heroku。

到目前为止,我有这个Nginx配置:

location / {
        proxy_set_header Host $host;
        proxy_pass http://myapp.herokuapp.com;
}
Run Code Online (Sandbox Code Playgroud)

Heroku要求Host设置标头以确定要使用的应用程序。

请求到达Heroku,但似乎Host没有设置标头。

有任何想法吗?

mrv*_*tin 6

在这里回答我自己的问题...

设法采用这种方法:

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    Host $host-customdomain.mydomain.com;
    proxy_redirect      off;
    proxy_pass          http://my_heroku_app_name.herokuapp.com;
}
Run Code Online (Sandbox Code Playgroud)

然后-customdomain.mydomain.comHost当它到达我的Heroku应用程序时,我从标题中进行了修剪,然后我的应用程序知道了请求的对象。希望这对某人有帮助。我写了一篇更详细的博客文章:https : //mrvautin.com/enabling-custom-domain-for-saas-application-on-heroku/