Nginx与Angular和Sping Boot

bf1o4zei  于 2023-05-22  发布在  Nginx
关注(0)|答案(1)|浏览(193)

我是这个领域的新手,并试图“发布”我自己的后端+前端。
我租了一个装有Ubuntu 20.04的Linux V-Server,并安装了Nginx“nginx/1.18.0(Ubuntu)”。
Angular(版本13)-Frontend-Files从dist-folder(ng build后)复制到服务器上的目标。我只是复制了文件,我没有在服务器上安装angular,因为angular文档说这样就足够了,这会是一个问题吗?
类似于/home/FrontEnd(AngularFiles)+ /home/Backend(Springboot.jar)
Springboot-Backend(版本2.6.2)是一个监听端口8080的“胖JAR”。安装了Java并配置了home-variable(如果我使用
curl -I 127.0.0.1/api/EXAMPLE
我得到了预期的响应)我还尝试了“localhost”而不是“127.0.0.1”。
不幸的是,我不能从前端调用后端函数,因为CORS。
下面是我的NginX配置文件:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events 
{
     worker_connections 768;
     # multi_accept on;
}

http 
{
include    /etc/nginx/mime.types;
    upstream springboot
    {
        server 127.0.0.1:8080  max_conns=10;
    }

    server
    {
        listen 80;
        listen [::]:80;
        server_name my_server;

        location /
        {
        root /home/DogCommando_Frontend;
        try_files $uri $uri/ /index.html;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        }
        
       location /api
        {
          proxy_pass    http://springboot;
          proxy_set_header    Host               $host;
          proxy_set_header    X-Real-IP          $remote_addr;
          proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
          proxy_set_header    X-Forwarded-Host   $host;
          proxy_set_header    X-Forwarded-Server $host;
          proxy_set_header    X-Forwarded-Port   $server_port;
          proxy_set_header    X-Forwarded-Proto  $scheme;        
        }
    }

  include /etc/nginx/mime.types;
        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
}

我可以调用Spring应用程序,如果我把

proxy_pass    http://springboot;

但是我的Angular-Frontend在这种情况下不会显示,即使文件的其余部分看起来像我上面发布的那个。
我还尝试了不同的

add_header Access-Control-Allow-Origin *;

但问题依然存在。
我想有某种我看不见的根本问题。
因为我在这个领域非常缺乏经验,每一个帮助都很感激,如果我错过了发布的东西,请让我知道。
提前感谢大家!

dffbzjpn

dffbzjpn1#

我终于明白了。
我的问题是我读了很多指南,他们总是谈论“localhost”。我假设(也许我读过了重要的部分)Spring-Application一旦启动就可以通过“localhost”或“127.0.0.1”进行寻址,但这是错误的。
我不得不修改我的API调用使用我的服务器地址,而不是“本地主机”。因此,从“localhost:8080/API/EXAMPLE”我将其重写为“myserveradress.net/api/EXAMPLE“,并且我在问题中发布的nginx-config工作并将“/api/”调用重定向到spring-application。
我希望这是可以理解的,我所写的,有人可以保存一些时间,如果他读这一点。

相关问题