本地环境后端服务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
相关推荐
AlienZHOU12 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
我要见SA姐114 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
Captaincc15 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
Elastic 中国社区官方博客15 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
fengkai454516 小时前
八、Docker详解4-5
运维·docker
计算机魔术师16 小时前
德国Wiki被黑后两周,OpenAI终于把模型失控的账本摊开了
前端
智恒百亿17 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090
kyriewen17 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒17 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow17 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端