Ich versuche, alle *.dev
Anforderungen an Port 80 abzufangen und sie an das richtige Rack-Projekt zu senden, indem Sie Rack Proxy verwenden. Ich bin in der Lage, die Anfragen zu fangen und basierend auf dem URI werde ich nach einem config.ru
in einem bestimmten Ordner suchen. Wenn ich in der Lage bin zu finden, werde ich den Server auf Port 3000.Verbindung verweigert, wenn Rack-Proxy verwendet wird
Danach booten, wenn ich eine Anfrage auf Port 80 empfangen, ich versuche die HTTP_HOST
-localhost:3000
zu setzen, aber ich bin immer die Nachricht Unexpected error while processing request: Connection refused - connect(2) for "localhost" port 3000
. Ich bin in der Lage, auf die Anwendung über localhost:3000
zuzugreifen, aber nicht über eine Domäne *.dev
. Ich habe bereits versucht, verschiedene Ports zu verwenden, aber das funktioniert auch nicht, also denke ich, dass es etwas mit dem Benutzer zu tun hat, der es ausführt. Ich hoffe jedoch, dass mir jemand dabei helfen kann.
require 'rack-proxy'
class AppProxy < Rack::Proxy
def rewrite_env(env)
request = Rack::Request.new(env)
site = request.host[0..-5]
uid = File.stat(__FILE__).uid
path = Etc.getpwuid(uid).dir + '/Software/Applications/'
front_controller = "#{path}#{site}/config.ru"
if File.file?(front_controller)
system "rackup -p 3000 -D #{front_controller} "
env["HTTP_HOST"] = "localhost:3000"
else
raise Exception.new "Not found"
end
env
end
end
run AppProxy.new
EDIT: Ich habe überprüft, ob es etwas auf Port ist 3000. Nach dem Ausführen des Servers und sudo lsof -i -n -P | grep TCP
ich das folgende Ergebnis für die Ports erhalten 80 und 3000:
ruby 56247 root 10u IPv4 0x727d74bd0b95bd9b 0t0 TCP *:80 (LISTEN)
ruby 56247 root 11u IPv4 0x727d74bd0a3b9bfb 0t0 TCP 127.0.0.1:80->127.0.0.1:52773 (ESTABLISHED)
ruby 56255 root 12u IPv6 0x727d74bd094e3c8b 0t0 TCP [::1]:3000 (LISTEN)
I Ich bin mir nicht sicher, ob das nützlich ist, weil ich die genaue Bedeutung davon nicht kenne.