Nginx Angular App 无法在生产环境中访问本地主机上的 REST API

Nginx Angular App 无法在生产环境中访问本地主机上的 REST API

我搜索了相当多,但仍然没有找到解决我的问题的方法......

我们有一个 NodeJS 应用程序,它是一个 Express 应用程序,在 localhost:3000 上公开 REST API。我们还有一个 AngularJS 应用程序,它是构建的 (ng build --prod),然后由 Nginx 提供服务。在本地机器上,一切正常。当我将其投入生产时,Angular 应用程序无法访问任何 API 端点。

XHR 标头信息

开发人员控制台输出

最初,我以为这可能是 CORS 问题,因此我将 Nginx 配置调整如下:

server {
        listen 80 default_server;
        listen [::]:80 default_server;


        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
        return 204;
     }
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
     }
     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
     }
        }
}

这并没有解决问题。Nginx 日志中没有任何信息,登录服务器后我可以通过 curl 成功访问 REST API。我被困住了。任何帮助都值得感激。

答案1

事实证明,Angular 无法解析 localhost,但使用 127.0.0.1 就可以了。

相关内容