Nginx实战教程二

一.介绍

本文介绍SPRINGBOOT+VUE项目配置API服务器的两种情况 + NGINX 配置VUE项目

二.vue项目和后端api接口不在同一台服务器

如果打包好的vue项目应用(dist) 和后端 api 接口没有运行在同一个主机上

  • 此时需要在开发环境下将 API 请求代理到 API 所在服务器。通过配置 vue.config.js 中的 devServer.proxy
devServer: {
   
  port: 13888, // 生产环境前端启动端口
  proxy: {
   
    '/api': {
   
      target: 'http://xxx.xxx.x.xxx:13889', // 后端服务器地址
      ws: true, // proxy websockets
      changOrigin: true, // 是否允许跨域
      pathRewrite: {
    // 重定向
        "^/api": ""
      }
    }
  }
}
  • 在生产环境中可通过NGINX配置代理服务器解决vue项目请求跨域问题
worker_processes  1;

events {
   
    worker_connections  1024;
}


http {
   
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
   
        listen       13888;
        server_name  http://129.129.16.40; # 前端项目部署服务器地址

        location / {
   
            root   html;
            index  index.html index.htm;
        }
		
		# 后端api接口反向代理地址
        location /api/ {
   
            proxy_pass http://10.8.1.152:13889/;
        }

		# 前端
		location /diagnosis {
   
			alias D:/nginx/web/sod/h5/; #vue项目打包完生成的dist
			try_files $uri $uri/ $uri/index.html $uri.html /index.html; # 解决前端的路由问题
			# 允许跨域请求的来源,可以使用通配符或具体域名
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow_Credentials' 'true';
			add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
			add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
		}
    }
}

三.vue项目和后端api接口同再一台服务器(重点)

如果打包好的前端应用(dist) 和后端 API 服务器运行在同一个主机上,但是只有一个端口做了内网映射

  • 前端网络请求地址
fetchData() {
   
	// 发送请求获取后端接口数据
	uni.request({
   
		url: 'http://139.126.16.40:13888/api/drugstore/getScore',
		method: 'GET',
		header: {
   
			token: token
		},
		data: {
   
			storeCode: drugStoreCode
		},
		success: (res) => {
   
			this.totalScore = res.data.data.physicalExaminationScore
		}
	})
}
  • nginx配置
worker_processes  1;

events {
   
    worker_connections  1024;
}


http {
   
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
   
        listen       13888;
        server_name  http://139.126.16.40; # 公网地址

        location / {
   
            root   html;
            index  index.html index.htm;
        }
		
		# 后端api接口反向代理地址
        location /api/ {
   
            proxy_pass http://10.8.1.152:13889/; # 内网地址
        }

		# 前端
		location /diagnosis {
   
			alias D:/nginx/web/sod/h5/; #vue项目打包完生成的dist
			try_files $uri $uri/ $uri/index.html $uri.html /index.html; # 解决前端的路由问题
			# 允许跨域请求的来源,可以使用通配符或具体域名
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow_Credentials' 'true';
			add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
			add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
		}
    }
}
  • 测试一(先用内网地址测试后端接口是否调通)

在这里插入图片描述

  • 测试二(再用公网地址测试反向代理是否成功)
    在这里插入图片描述

注意:同时服务器要配置端口入站和出站规则(简单的说 出站就是你访问外网 入站就是外网访问你)

相关推荐

  1. Nginx安装教程

    2023-12-08 21:10:03       19 阅读
  2. Nginx - location 指令(

    2023-12-08 21:10:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 21:10:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 21:10:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 21:10:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 21:10:03       18 阅读

热门阅读

  1. GO设计模式——10、组合模式(结构型)

    2023-12-08 21:10:03       25 阅读
  2. 【工具】机器之间传输文件的常用方式

    2023-12-08 21:10:03       37 阅读
  3. Nump数组的拼接详细教程

    2023-12-08 21:10:03       32 阅读
  4. mysql获取时间异常

    2023-12-08 21:10:03       40 阅读
  5. TypeScript中泛型对象、泛型类

    2023-12-08 21:10:03       39 阅读
  6. 【python】vscode中选择虚拟环境venv

    2023-12-08 21:10:03       37 阅读