在同一服务器和端口上运行EmberJS和Django
我想在同一台服务器上运行EmberJS和Django,以避免跨域请求 例如,我想在上运行EmberJS example.com:80 和Django REST API example.com:80/api/ 我通常使用命令在同一服务器和端口上运行EmberJS和Django,django,rest,ember.js,port,server,Django,Rest,Ember.js,Port,Server,我想在同一台服务器上运行EmberJS和Django,以避免跨域请求 例如,我想在上运行EmberJS example.com:80 和Django REST API example.com:80/api/ 我通常使用命令ember-serve--port 80启动ember,并使用命令python manage.py runserver 0.0.0.0:8000运行django。但这样做的两个服务器是在不同的域,我有跨域的问题 如何在具有相同端口的同一服务器上运行这两个服务器?最常见的方法是在
ember-serve--port 80
启动ember,并使用命令python manage.py runserver 0.0.0.0:8000运行django。但这样做的两个服务器是在不同的域,我有跨域的问题
如何在具有相同端口的同一服务器上运行这两个服务器?最常见的方法是在不同的端口上运行django和ember,并在端口80上使用反向代理将请求代理到需要它们的位置。Nginx是一种流行的选择(请参阅)
您想要的配置示例
server {
listen 127.0.0.1:8080;
location / {
proxy_pass http://127.0.0.1:4200; # ember server
# ... additional proxy config
}
location /api {
proxy_pass http://127.0.0.1:8080; # django server
# ... additional proxy config
}
}
Ember CLI还可以将API请求代理到另一台服务器,但我不确定是否要在生产环境中执行此操作。您在内容安全策略方面遇到了问题。你可以放宽政策,但我建议不要这样做
ember-server
命令是一种设置文件服务器以测试ember代码的简单方法,但它不适用于生产使用。请记住,Ember是要编译成一个javascript资产,您可以通过后端服务器或主机通过CDN提供服务(并通过后端应用程序提供的html/模板中的脚本标记进行引用)
对django来说,这意味着
将你的余烬应用程序编译成一个js文件
在索引视图中引用此js文件
像平常一样启动django(但不要运行ember服务器)
如果在开发模式下这样做太痛苦,那么我建议使用ember服务器--proxy
命令。看起来您可以执行ember server--proxy 80
并在端口80上运行django,不过。执行此操作nginx会出现以下错误:nginx:[emerg]bind()到127.0.0.1:8080失败(98:地址已在使用)@user3178668抱歉,更改listen 127.0.0.1:8080代码>到听127.0.0.1:80代码>通过将django端口更改为8000并将侦听端口更改为80解决。此外,我还使用example.com将emberJs应用程序从外部可见,从而更改为127.0.0.1。感谢您的建议。我想我会把它用于生产。对于ember服务器--代理80不起作用。。