前端页面不能调后台接口,主要问题就是前端能调后台接口就行了

Blade 未结 1 670
583363187
583363187 剑童 2021-11-15 16:22


 1. 退回到你可以访问界面的配置并刷新网页能正常访问 

      刷新都能正常访问前端页面。

 2. 看f12 network的接口返回具体错误是什么

   image.png

 3. 提供nginx完整配置

   

nginx_conf.txt


dc-food_conf.txt

 4. 在server节点加上我们给你的反向代理的配置

这是我按照你提供的8000,加的反向代理

image.png

 5. 再看接口返回是什么

    接口返回404

 6. 88端口代理了gateway,那用postman调用gateway地址看看是否token接口有正确返回。以此来排查是后端部署的问题还是前端反向代理的问题

   这个地址不用鉴权,我在网关已做放行了,不需要token,前端的请求地址:http://food.nyfwypt.com/dmaier-food/infodetail/getNews,它请求端口是80,而不是88,请求http://food.nyfwypt.com:88/dmaier-food/infodetail/getNews 就有数据返回

h,wjg thttp://food.nyfwypt.com/dmaier-food/infodetail/getNewstp://food.nyfwypt.com/dmaier-food/infodetail/getNews

image.png


image.png










1条回答
  • 2021-11-15 16:26

    不需要配置devServer,只需要在nginx配置就行。至于你需要哪个端口,你就在server进行配置。如果你要80端口,就把反向代理配置到80,要8000端口,就反向代理配置到8000。

    server {
        listen       80;
        server_name food.nyfwypt.com;
        access_log  /logs/nginx/dc-food.access.log  main;
        location / {
            root   /html/dc/web;
            index  index.html index.htm;
        }
        location ^~ /oauth/redirect {
               rewrite ^(.*)$ /index.html break;
          }
    
          location ^~ /api {
               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_buffering off;
               rewrite ^/api/(.*)$ /$1 break;
               proxy_pass http://dcgateway;
          }
    }

    或者

    server {
       listen       8000;
       server_name food.nyfwypt.com;
       access_log  /logs/nginx/dc-food.access.log  main;
       location / {
           root   /html/dc/web;
           index  index.html index.htm;
       }
       location ^~ /oauth/redirect {
              rewrite ^(.*)$ /index.html break;
         }

         location ^~ /api {
              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_buffering off;
              rewrite ^/api/(.*)$ /$1 break;
              proxy_pass http://dcgateway;
         }
    }

    =============

    补充回答


    你不是说80被占用了么?怎么还配置80的端口,改成8000的,另外把devServer配置改回来,不要删掉。信息再提供完整点



    =============

    补充回答


    你之前没有配置过nginx还是说没有完整部署过一套最简单的系统,看你的描述觉得很乱。你说现在不能访问,那是不是之前能访问。你把之前能访问的配置贴出来,并且改回去,然后刷新页面,看浏览器f12的network接口返回什么信息。

    你改完之后只提供一个局部的配置告诉我不行,不能访问了。我们是没法帮你排查的。

    已经一个下午了,你给我们提供的信息都是碎片化的,没有实际能排查的作用,希望你能好好看我们给你的回答以及排查步骤,群里怎么做也和你说了。


     1. 退回到你可以访问界面的配置并刷新网页能正常访问

     2. 看f12 network的接口返回具体错误是什么

     3. 提供nginx完整配置

     4. 在server节点加上我们给你的反向代理的配置

     5. 再看接口返回是什么

     6. 88端口代理了gateway,那用postman调用gateway地址看看是否token接口有正确返回。以此来排查是后端部署的问题还是前端反向代理的问题


    =============

    补充回答

    正常情况的反向代理,是要有一个 /api 前缀的地址的,比如你 部署的前端地址是 http://food.nyfwypt.com,那么反向代理后从前端访问的地址就是 http://food.nyfwypt.com/api/dmaier-food/infodetail/getNews ,而我看你前端的地址 直接就是 http://food.nyfwypt.com/dmaier-food/infodetail/getNews,没有反向代理的痕迹。是直接调用的接口绝对路径么?如果是这样的话,那你去找找前端哪里有一个全局接口全局路径的配置,把你的88端口Gateway填进去看看是否能访问成功。

    如果你们有反向代理的配置,那去接口看看那里把/api前缀给去掉了,加上,如果不是/api前缀,则到nginx配置的反向代理/api改成你们自己配置的。

    反正就是一对一的关系,配置了反向代理,那代码与nginx的代理前缀都要一样,有了反向代理就是前端端口直接代理了,不需要单独配置88端口的gateway。

    如果没有反向代理,是接口绝对路径调用,则到前端把绝对路径配置上,配置的地址就是你的88端口gateway地址。

    0 讨论(0)
提交回复