Chcę wdrożyć aplikację Ruby on Rails na moim komputerze lokalnym przez Nginx
i serwery internetowe RoR (takie jak Unicorn
, Thin
lub WEBrick
).Dlaczego nie mogę uzyskać dostępu do poddomeny za pośrednictwem proxy nginx?
Jak pokazano poniżej, chcę dostęp do mojej aplikacji internetowej przez post
subdomeny:
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;
}
}
Wszystko działa bez zarzutu, a kiedy wpisuję post.subdomain.me
widzę mojej aplikacji ROR.
Problem: Gdy używam post.subdomain.me
url Nie mogę uzyskać dostępu do mojego subdomenie (request.subdomain
wraca pusty i request.host
powraca subdomain
instaed z subdomain.me
). Ale gdy używam post.subdomain.me:3000
co wszystko działa idealnie (I stracił połowę moich włosków sobie sprawę, że). Dlaczego i jak mogę to rozwiązać?
Czego używasz do serwera HTTP? Wspomniałeś Unicorn, Thin i Webrick, ale nie powiedziałeś, który próbowałeś. –
@TomL: Z nimi wszystkimi mam ten sam problem. –
Wszystkie twoje dyrektywy 'proxy_xxx' znajdują się w niewłaściwym bloku' location'. Musisz zachować je za pomocą dyrektywy 'proxy_pass' w bloku' location @ ruby', w przeciwnym razie zostaną one zignorowane. –