gpt4 book ai didi

ruby-on-rails - 为什么我无法通过nginx proxy pass访问子域?

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:46 26 4
gpt4 key购买 nike

我想通过 Nginx 和 RoR 网络服务器(如 UnicornThinWEBrick).

如下所示,我想通过 post 子域访问我的网络应用程序:

upstream sub {
server unix:/tmp/unicorn.subdomain.sock fail_timeout=0;
# server 127.0.0.1:3000;
}

server {
listen 80;
server_name post.subdomain.me;

access_log /var/www/subdomain/log/access.log;
error_log /var/www/subdomain/log/error.log;
root /var/www/subdomain;
index index.html;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
}

location @ruby {
proxy_pass http://sub;
}
}

一切正常,当我输入 post.subdomain.me 时,我可以看到我的 RoR 应用。

问题:当我使用 post.subdomain.me url 时,我无法访问我的子域(request.subdomain 返回空并且request.host 返回 subdomain 代替 subdomain.me)。但是当我使用 post.subdomain.me:3000 时,一切都很完美(我意识到这一点,我的头发掉了一半)。为什么以及如何解决?

最佳答案

当您使用端口访问应用程序时 - 您是直接访问 Rails 服务器,而不是通过 Nginx 代理,这对于调试来说很好,但通常不适合生产。

可能主机头没有被客户端传递过来,$host默认为nginx host

尝试

location @ruby {
proxy_set_header Host $host;
proxy_pass http://sub;
}

还有一种“硬编码”方式:proxy_set_header Host post.subdomain.me;

关于ruby-on-rails - 为什么我无法通过nginx proxy pass访问子域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com