Nginx实现前端访问后端本地接口

今天前端打了个包,让我自己在本地测一下,属实给我整不会了。

一吭点月薪的后端开发,测试也要自己搞了,谁让咱技术菜,还得忍辱负重呢!

Nginx配置两个地方就行:

  1. 先是配置好自己项目的服务,确保自己的项目能运行:

server {
        listen       8089;                      //前端项目端口
        server_name  localhost;        //ip
        location / {
            root   F:\工作文件\unify-platform-ie;        //前端项目本地文件路径
            index  index.html index.htm;                   //首页页面
        }
    }

 能够正确看到你的前端页面就ok!

    2.  再是配置接口请求后端:

location /interface/plat20/ {   (前端访问后台接口的基础url)
            proxy_pass http://本机ip:8088/plat20/;(后端接口地址,端口号也要注意哦,不是80的记得带上端口号,eg:proxy_pass http://本机ip:8088)
            proxy_set_header Host 127.0.0.1;
        }

注意点(后端接口配置):

如果你的配置出现404了,这个时候你可以对照检查下面的问题是不是你遇到的。

  1. proxy_pass 地址后面要不要加“/”,这个取决于匹配的 /interface/plat20/ 作不作为你uri的一部分,如果 /interface/plat20/ 是其中一部分,则不需要带上“/”;
    反之带上。加了“/”相当于是绝对根路径,nginx 不会把location 中匹配的路径 /interface/plat20/带上。

    [举个列子]:

     请求地址原本是这样: http://192.168.1.1/api/a.html;
     如果配置是这样:proxy_pass http://192.168.1.1/;(后端接口地址)
     那么请求接口地址应该变成这样: http://192.168.1.1/a.html 
    
    
  2. proxy_pass的地址记得在hosts文件做ip映射,建议直接使用域名对应的ip地址。也可以像我上面那样直接写proxy_set_header Host 127.0.0.1;

  3. location 中 ~ (区分大小写)与 ~* (不区分大小写)标识均为正则匹配。
    如果你不确定,请在location后面加上 location ~* /api/ { }这样的配置(目的:不区分“api”三个字母的大小写)。

最后,后台项目启动起来,请求前端配置的端口,就可以连通测试了!

### 配置 Nginx 作为反向代理 为了使 Nginx 同时处理前端静态资源和后端 API 请求,需对 Nginx配置文件 `nginx.conf` 或者站点特定的 `.conf` 文件进行适当修改。以下是具体的实现方法。 #### 处理前端静态资源 当用户访问根路径或其他指定路径时,Nginx 应该提供存储于本地磁盘上的 HTML、CSS 和 JavaScript 等静态文件。这可以通过定义 location 块并指向这些文件的位置来完成[^1]: ```nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; # 设置静态资源目录位置 index index.html index.htm; try_files $uri $uri/ /index.html; # 将未匹配到的请求重定向至首页,适用于单页应用(SPA) } } ``` 此段代码确保任何对于不存在 URL 的请求都会被导向到应用程序的主要入口点 (`index.html`),这对于构建基于路由的历史模式 (history mode) 单页面应用程序非常重要。 #### 转发后端 API 请求 为了让 Nginx 正确地将 `/api/*` 开头的请求转发给后端服务,同样需要创建一个新的 location 块专门用于此类目的。在此示例中,假定后端运行在一个不同的 IP 地址上,并监听着标准 HTTP 端口 9028[^2]: ```nginx location /api/ { proxy_pass http://171.35.40.185:9028/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` 上述配置不仅指定了目标服务器的信息,还设置了几个重要的头部字段以便让下游的服务知道原始请求的一些细节信息。 #### 安全性和跨域资源共享(CORS) 考虑到安全性因素,在生产环境中不建议将 CORS header 中的 Access-Control-Allow-Origin 设为通配符(*),尤其是在涉及敏感数据交换的情况下。相反,应该明确列出允许哪些域名发起跨源请求[^3]: ```nginx add_header 'Access-Control-Allow-Origin' 'https://example.com'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } ``` 这段额外的设置有助于防止潜在的安全风险,同时也支持预检请求(Preflight Request),使得前后端交互更加顺畅可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值