![Nginx 反向代理至 Heroku 应用程序](https://linux22.com/image/798915/Nginx%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E8%87%B3%20Heroku%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
是否可以在我的个人 VPS 上使用 Nginx 作为 Heroku 前面的反向代理(运行 Ruby on Rails 应用程序)?
我想这样做是因为我想将标准请求(即GET http://mydomain.com
)路由到我的 Rails 应用程序,但将各种子域请求(即GET http://joe.mydomain.com
)路由到单独的服务器。
作为第 2 部分的一部分(假设这是可能的),在这种情况下应该设置什么正确的 Nginx 代理标头? 在 Unicorn 前面使用 Nginx 时,我通常会执行以下操作:
proxy_redirect off;
proxy_read_timeout 5m;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto http;
正如几乎每个教程中一样,但我不够了解,不知道在这种情况下哪些适用(或缺失)。
非常感谢您的帮助!
答案1
可以通过 proxy_pass 执行你所提议的操作(http://wiki.nginx.org/HttpProxyModule#proxy_pass),但通过 DNS 路由这些请求会更容易。
要使用 Heroku 的顶点域,您可以在 DNSimple 上使用 ALIAS 记录或在 DNS Made Easy 上使用 ANAME 记录,并在子域中使用常规 A 记录。
但是,我自己的网站已将域名 apex 设置为 nginx 的 A 记录,该记录直接重定向到 www,这是 heroku 的 CNAME。有关支持/建议的更多信息,请参见此处:https://devcenter.heroku.com/articles/custom-domains