本地环境后端服务nginx反向代理,前端联调CORS设置不生效解决

异地办公,网络不通,前端在后端不发布测试环境的情况下,连接后端开发者本地服务。

1 步骤

1.1 后端本地启动服务

例如我这里有12个微服务都在本地启动,每个服务各自占一个端口。

1.2 内网穿透工具

本人用的huashengke,那个需要实名和付钱,9.9可以映射2个端口,有公网服务器的话可以自己部署开源FRP。我把80穿出去了

1.3 windows下载绿色版的nginx,修改conf然后启动

1.3.1 主要解决下跨域问题

  1. 有时CORS Error的原因不是没设置Access-Control-Allow-Origin,也不是因为 Access-Control-Allow-Origin的通配符*不起作用,而是Access-Control-Allow-Headers设置错了,如果写的是枚举值,可能漏掉某些不常用header,比如requestid,所以设置成$http_access_control_request_headers always
  2. 在option方法中设置Access-Control-Allow-Origin,在外面就不要设置,不然前端请求返回是Access-Control-Allow-Origin: *,*

1.3.2 conf

复制代码
worker_processes  1;

events {
    worker_connections  1024;
}


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

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  127.0.0.1;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
	
		
		# 服务course: 8110
		location /course/api {
			add_header X-Debug-Location "course-api-block" always;
			
			# 预检请求处理
			if ($request_method = 'OPTIONS') {
				add_header Access-Control-Allow-Origin "*" always;
				add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
				add_header Access-Control-Allow-Credentials true always;
				add_header Access-Control-Allow-Headers $http_access_control_request_headers always;
				return 200;
			}

			add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
			add_header Access-Control-Allow-Headers $http_access_control_request_headers always;
			add_header Access-Control-Allow-Credentials true always;
			
			proxy_pass http://127.0.0.1:8110/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;

			# WebSocket 支持(如果需要)
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
		}
		
		# 服务system: 8100
		location /system/api {			
			add_header X-Debug-Location "system-api-block" always;
			
			# 预检请求处理
			if ($request_method = 'OPTIONS') {
				add_header Access-Control-Allow-Origin "*" always;
				add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
				add_header Access-Control-Allow-Credentials true always;
				add_header Access-Control-Allow-Headers $http_access_control_request_headers always;
				return 200;
			}

			add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
			add_header Access-Control-Allow-Headers $http_access_control_request_headers always;
			add_header Access-Control-Allow-Credentials true always;
			
			proxy_pass http://127.0.0.1:8100/api;
		}
	
		# 省略 10个服务配置

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

1.4 启动nginx

powershell直接定位到nginx目录,直接运行即可

1.5 前端配置

前端调用就调用到axios,访问地址如下配置

JavaScript 复制代码
COURSE: 'http://xxx.vicp.fun/course/api',
SYSTEM: 'http://xxx.vicp.fun/system/api',
// skip over
相关推荐
广州华水科技24 分钟前
单北斗GNSS在变形监测中的优势与应用分析
前端
无忧.芙桃1 小时前
线程同步与线程互斥(上)
linux·运维·操作系统·运维开发
程序员爱钓鱼1 小时前
Rust 变量与不可变性:为什么默认不能修改变量?
前端·后端·rust
随风一样自由2 小时前
【前端工程化】前端工程化解耦实践:从问题分析到架构重构
前端·重构·架构
vortex52 小时前
Web 渗透测试:未授权与越权漏洞全流程挖掘思路
前端
我有满天星辰2 小时前
【前端模块化】前端模块化演进之路:从脚本堆砌到标准统一
前端
我有满天星辰2 小时前
Vue 3 响应式双雄:ref 与 reactive 完全指南
前端·javascript·vue.js
xywww1685 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
梦想的颜色8 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
donoot10 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理