如何将nginx配置为在/上为angular应用程序提供服务,并将proxy/api配置为另一个api服务器



我正在尝试配置一个nginx Docker容器,以在其根路径上为Angular应用程序提供服务(目前为止有效(,并通过/api上的代理使后端可用。

我在Stackoverflow和一些博客上读过多个线程,但到目前为止还没有配置。如果我打开我的应用程序,Angular应用程序就会工作。当我试图在同一个url上调用/api时,它会被重定向到/,并且没有显示任何内容——我想Angular路由器得到了一些它无法处理的路由。但是Nginx应该在调用Angular应用程序之前赶上这条路线。我该怎么做?

我不确定出了什么问题。你在我的配置中看到错误了吗?

server {
listen 80;
sendfile on;
default_type application/octet-stream;
gzip on;
gzip_http_version 1.1;
gzip_disable      "MSIE [1-6].";
gzip_min_length   256;
gzip_vary         on;
gzip_proxied      expired no-cache no-store private auth;
gzip_types        text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level   9;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}

location /api/ {
proxy_pass http://host.docker.internal:8080/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

第1版:我发现一个问题:容器无法访问api服务器。我在配置中将其更改为host.docker.internal,可以通过docker ci访问。但是我仍然无法在nginx容器上调用/api。我现在得了404分。

我会使用下面的语法让Nginx知道这是在您的通用位置之前出现的。

location ^~ /api/ { }

您可以在此处阅读更多信息->https://www.journaldev.com/26342/nginx-location-directive

事实证明,上面的配置是有效的,我在另一个项目的错误文件夹中。

最新更新