突发奇想要自己搭建一套架构:
服务器:linux (ubuntu 18.04)
web服务:nginx
前端:angular
后台:.net 5 web api
服务器段大概的思路是:angular放nginx进行托管,对外开放ip端口80。angular调用本地.net 5 api接口,http://localhost:5000/WeatherForecast。
问题发生在angular调用接口时出错:
疑问:
1.这套架构是否成立?
2.如果成立,问题出在什么地方?需要.net api开放对外吗?
大概架构图:
服务器端调用.net core api接口如下:可以正确返回数据。
.net 代码:已经添加了跨域代码,本地测试通过跨域问题,所以不是跨域问题。
angular调用:
nginx配置:
困扰好长时间了,不知有没有园友有何方案?
location /api {
proxy_pass http://127.0.0.1:5000/;
proxy_set_header Host $host;
proxy_set_header Connection keep-alive;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
为什么是一段源码
不知道为什么图片都不显示了。
api 要开外网访问,不然用户访问的时候浏览器请求locahost,你说用户电脑本地会有web服务器吗
明白了,那就是不管angular和.net api是否在同一服务器上都是需要开放对外接口的。
需要配置跨域吧
webapi走调试模式,angular调用接口时,能进断点吗
– 默卿 3年前@默卿: 可以的,本地测试都是可以返回数据的。
– Jason_黑色曼陀罗 3年前@Jason_黑色曼陀罗: 我好像知道为啥了,你的webapi部署在本地,nginx在linux上,linux所在的服务器应该是无法访问你的本地接口吧... 你尝试把webapi部署到服务器上试试呢
– 默卿 3年前@默卿: 兄弟,别闹。api是在服务器上,本意是 angular开放对外端口,而api服务器本地接口。
– Jason_黑色曼陀罗 3年前@Jason_黑色曼陀罗:angular是前台页面,你从浏览器发的请求是localhost。nginx为啥不给接口做配置呢
– slowstart 3年前@slowstart: 那我大概理解了:angular/.net api都必须开放对外接口才行。
– Jason_黑色曼陀罗 3年前nginx同时挂载angular和.net api 接口 该怎么做?