我有一个/etc/hosts
包含以下两行的文件:
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
一切正常。当我 ping 时,myapp.dev
它会映射到127.0.0.2
,当我 ping 时,api.myapp.dev
它会映射到127.0.0.3
,正如它应该的那样。
现在我需要映射127.0.0.2
到127.0.0.1:3000
和127.0.0.3
到127.0.0.1:3001
。
这是必要的,因为我正在尝试运行一个 Rack 应用程序,其配置文件config.ru
是
#\ -w -p 3001
require 'emeraldfw'
ENVIRONMENT = ENV['EMERALD_ENV'].nil? ? :development : ENV['EMERALD_ENV']
use Rack::Reloader, 0
use Rack::ContentLength
if (ENVIRONMENT == :production) then
use Rack::Static, :urls => {"/" => 'index.html'}, :root => 'fe/build'
else
Dir.chdir('fe')
spawn 'npm start'
Dir.chdir('..')
end
run EmeraldFW::Loader.new
此配置文件的作用是在端口 3001 上运行 Rack 应用程序。当环境变量 EMERALD_END 设置为时,production
它用于Rack::Static
提供静态文件。另一方面,当 EMERALD_ENV 设置为development
或时,test
它会在端口 3000 启动 ReactJS 应用程序作为前端应用程序。
现在的总体思路是访问前端应用程序,http://myapp.dev
并访问 API(后端)http://api.myapp.dev
。
我尝试了一些技巧,甚至考虑使用iptables或其他数据包过滤软件来执行此操作。我知道我可能会使用iptables规则将输入从某个 IP/端口重定向到另一个 IP,但我宁愿找到一个更简单的解决方案。
有什么建议么?