【无标题】

nginx配置:

bash 复制代码
upstream cm_doc_compose {
	server 169.254.197.100:8088;
}


server {
	listen 10013;  # 监听20012端口(前端访问端口)

	server_name _;  # 接受任何域名/IP访问

    	client_max_body_size 1024M;



	# 处理静态资源请求(匹配所有路径,优先查找文件)
	location / {

		# 静态资源根目录:指向React的build目录
		#root /usr/share/nginx/html/doc_compose;
		root /usr/local/openresty/nginx/html/doc_compose;

		# 默认索引页(访问根路径时加载index.html)
		index  index.html index.htm;

		# 尝试查找请求的文件/目录,找不到则返回index.html(支持SPA路由)
		try_files $uri $uri/ /index.html;
	}

	# 将 proxy_pass 放入 location 块中	
	location /api/ {
	proxy_pass http://cm_doc_compose/;  # 代理到 upstream 定义的后端服务
	# 设置代理超时时间
	proxy_connect_timeout 60s;    # 连接到后端服务器的超时时间
	proxy_send_timeout 60s;       # 向后端发送请求的超时时间
	proxy_read_timeout 600s;      # 从后端读取响应的超时时间(对于长请求很重要)

	# 建议添加以下常用代理头(可选但推荐)
	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_set_header X-Forwarded-Proto $scheme;
	}

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

}

问题:请求地址为http://10.104.255.20:10013/api/user/login, 那代理后的地址应该是访问,169.254.197.100:8088/user/login吧,但却是169.254.197.100:8088/api/user/login


解决方法:

现在的配置:

nginx 复制代码
proxy_pass http://cm_doc_compose;  # 末尾 没有 /

转发结果:
/api/user/login → 原样转发 → http://169.254.197.100:8088/api/user/login

改成这样(末尾加 /):

nginx 复制代码
proxy_pass http://cm_doc_compose/;  # 末尾 有 /

转发结果:
/api/user/login → 去掉 /api/ → http://169.254.197.100:8088/user/login


情况1:现在的写法(错误)

nginx 复制代码
location /api/ {
    proxy_pass http://cm_doc_compose;  # 无 /
}

规则:
把 location 匹配的路径,完整拼接到代理地址后面

请求:
/api/user/login

代理后:

http://cm_doc_compose + /api/user/login

http://169.254.197.100:8088/api/user/login ❌


情况2:正确写法(加 /)

nginx 复制代码
location /api/ {
    proxy_pass http://cm_doc_compose/;  # 有 /
}

规则:
把 location 匹配的 /api/ 替换掉,只转发后面的路径

请求:
/api/user/login

代理后:

http://cm_doc_compose/ + user/login

http://169.254.197.100:8088/user/login ✅


✅ 只需要改这一行

把:

nginx 复制代码
proxy_pass http://cm_doc_compose;

改成:

nginx 复制代码
proxy_pass http://cm_doc_compose/;

就这一个斜杠,决定了你的接口能不能通!


✅ 改完后的完整正确配置

nginx 复制代码
location /api/ {
    proxy_pass http://cm_doc_compose/;  # 这里加了 /

    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 600s;

    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_set_header X-Forwarded-Proto $scheme;
}

🚀 重启 Nginx 即可生效

bash 复制代码
nginx -t
nginx -s reload

总结

  • proxy_pass 末尾无 / :完整拼接路径 → 带 /api → 404
  • proxy_pass 末尾有 / :替换路径 → 去掉 /api → 正常访问

现在的问题是少了这个 /**!

相关推荐
吴声子夜歌2 小时前
Nginx应用与运维——Nginx HTTP模块详解(数据处理功能模块)
运维·nginx·http
吴声子夜歌6 小时前
Nginx应用与运维——Nginx HTTP模块详解(访问控制功能模块)
运维·nginx·http
吴声子夜歌12 小时前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
吴声子夜歌13 小时前
Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
运维·前端·nginx
PC2005-cloud15 小时前
Nginx 学习笔记:URL Rewrite 从入门到实战,让链接更优雅、更SEO友好
nginx
吴声子夜歌16 小时前
Nginx应用与运维——Nginx Web服务应用实战(HTTPS安全服务器的搭建)
运维·前端·nginx
吴声子夜歌16 小时前
Nginx应用与运维——Nginx Web服务应用实战(伪流媒体服务器的搭建)
运维·前端·nginx
吴声子夜歌16 小时前
Nginx应用与运维——Nginx Web服务应用实战(HTTP增强协议服务器的搭建)
运维·前端·nginx
天衍四九-1 天前
【无标题】
前端·spring boot·mysql·nginx·docker
吴声子夜歌1 天前
Nginx应用与运维——Nginx HTTP模块详解(动态赋值功能模块)
运维·nginx·http