Desidero distribuire l'applicazione Ruby on Rails sul mio computer locale tramite i server Web Nginx
e RoR (come Unicorn
, Thin
o WEBrick
).Perché non riesco ad accedere al sottodominio tramite il passaggio proxy nginx?
Come mostrato di seguito, voglio accedere nel mio spazio web-app per post
sottodominio:
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;
}
}
tutto funziona bene e quando digito post.subdomain.me
posso vedere il mio RoR app.
Problema: Quando uso post.subdomain.me
url non posso accedere al mio sottodominio (request.subdomain
ritorna vuoto e request.host
rendimenti subdomain
instaed di subdomain.me
). Ma quando uso lo post.subdomain.me:3000
tutte le cose funzionano perfettamente (ho perso metà dei miei capelli per rendermene conto). Perché e come posso risolverlo?
Che cosa stai utilizzando per il server HTTP? Hai citato Unicorn, Thin e Webrick ma non hai detto quale hai provato. –
@TomL: Con tutti loro ho lo stesso problema. –
Tutte le direttive 'proxy_xxx' sono nel blocco' location' sbagliato. Devi tenerli con la direttiva 'proxy_pass' nel blocco' location @ ruby', altrimenti saranno ignorati. –