Nginx部署vue以及转发配置记录

目录

nginx配置

这是独立的server模块配置,需要在父配置nginx.conf加入这个配置文件。

在父配置nginx.conf文件的http模块内加入。

比如:include conf.d/vue-app.conf;

java 复制代码
 server {
    listen       83;  # 使用不同端口避免冲突
    server_name  localhost;

	# 处理 /practice(仅路径本身)
	location = /practice {
		return 301 /practice/;
	}
	
    # 1. 配置前端 /practice/* 路径:指向打包后的静态资源,解决 history 模式刷新404
	location /practice/ {
		# 静态资源根路径:指向前端打包后的 practice 目录(关键!注意:需与实际路径一致,实际路径与vue项目打包配置相关)
		# 文件查找路径root C:/nginx/nginx-1.28.0/html/dist; + location /practice/
		root   C:/nginx/nginx-1.28.0/html/dist; 
		
		# 访问 /practice/ 时默认加载 index.html
		index  index.html index.htm;
		
		# 核心:history 模式刷新404解决方案------路径不存在时,重定向到 /practice/index.html(关键!注意:需与实际路径一致,实际路径与vue项目打包配置相关)
		try_files $uri $uri/ /practice/index.html;
	}

	# 2. 配置后端接口转发:/practice/api/* → 后端服务(与 vue.config.js proxy 一致),
	# /practice/api/是vue项目配置转发给后端的url前缀,实际后端项目是接收去掉/practice/api/之后的路径,比如/practice/api/getInfo,后端接收/getInfo
	
	location /practice/api/ {
	
		# 转发目标:后端服务地址(需与 vue.config.js 中 baseUrl 一致)
		# Nginx 的转发逻辑是:将/practice/api/之后的路径部分,拼接到proxy_pass的目标地址后
		# 客户端请求 http://你的域名/practice/api/user/list
		# Nginx 会转发到 http://localhost:8080/user/list
		
		proxy_pass http://localhost:8080/;
		
		# 关键:确保后端能获取客户端真实信息(如 IP、Host)
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

需要配置两个location,一个用来获取静态资源,如js、css等;另一个转发请求到后端,解决跨域问题。

部署vue

java 复制代码
 # 1. 配置前端 /practice/* 路径:指向打包后的静态资源,解决 history 模式刷新404
	location /practice/ {
		# 静态资源根路径:指向前端打包后的 practice 目录(关键!注意:需与实际路径一致,实际路径与vue项目打包配置相关)
		# 文件查找路径root C:/nginx/nginx-1.28.0/html/dist; + location /practice/
		root   C:/nginx/nginx-1.28.0/html/dist; 
		
		# 访问 /practice/ 时默认加载 index.html
		index  index.html index.htm;
		
		# 核心:history 模式刷新404解决方案------路径不存在时,重定向到 /practice/index.html(关键!注意:需与实际路径一致,实际路径与vue项目打包配置相关)
		try_files $uri $uri/ /practice/index.html;
	}

转发请求到后端,解决跨域问题

java 复制代码
# 2. 配置后端接口转发:/practice/api/* → 后端服务(与 vue.config.js proxy 一致),
	# /practice/api/是vue项目配置转发给后端的url前缀,实际后端项目是接收去掉/practice/api/之后的路径,比如/practice/api/getInfo,后端接收/getInfo
	
	location /practice/api/ {
	
		# 转发目标:后端服务地址(需与 vue.config.js 中 baseUrl 一致)
		# Nginx 的转发逻辑是:将/practice/api/之后的路径部分,拼接到proxy_pass的目标地址后
		# 客户端请求 http://你的域名/practice/api/user/list
		# Nginx 会转发到 http://localhost:8080/user/list
		
		proxy_pass http://localhost:8080/;
		
		# 关键:确保后端能获取客户端真实信息(如 IP、Host)
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

外部的nginx需要转发到上面的vue项目配置

java 复制代码
server {
    listen 9080;
    server_name localhost;
	
	access_log logs/9080_access.log; # 确保日志能记录请求
    
	# 处理 /practice(仅路径本身)
	location = /practice {
		return 301 /practice/;
	}

    # 处理带斜杠的路径转发
    location /practice/ {
        # 直接代理到Vue的83端口(确保Vue此时能正常访问)
        proxy_pass http://localhost:83;
        
        # 强制传递正确的端口信息
        proxy_set_header Host localhost:9080;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

问题记录

  1. windows使用nginx重新加载命令不生效
    使用nginx.exe -s reload配置不生效
    需要先kill掉进程,再启动。
    kill的命令:
    taskkill /f /im nginx.exe
    启动命令(进到nginx安装目录,cmd):
    start nginx.exe
相关推荐
范德萨_12 小时前
JavaScript 实用技巧(总结)
开发语言·前端·javascript
执携12 小时前
Vue Router (匹配当前路由的链接和类名配置)
前端·javascript·vue.js
若安程序开发12 小时前
web华为商城前端项目4页面
前端·华为
一枚前端小能手12 小时前
🏷️ HTML 属性参考 - 常用与全局属性的行为、兼容性与最佳实践
前端·javascript·html
付十一13 小时前
更新!Figma MCP + Cursor:大前端时代的UI到代码自动化
android·前端·ai编程
万岳科技程序员小金13 小时前
多端统一的教育系统源码开发详解:Web、小程序与APP的无缝融合
前端·小程序·软件开发·app开发·在线教育系统源码·教育培训app开发·教育培训小程序
软件架构师-叶秋13 小时前
Vue3+tyepescript+ElementPlus+Axios前端技术栈
前端·vue3·elementplus
AAA阿giao13 小时前
HTML/CSS/JS 页面渲染机制:揭秘浏览器如何将平凡代码点化为视觉魔法
前端·css·html
lichenyang45313 小时前
从零到一:编写一个简单的 Umi 插件并发布到 npm
前端·react.js·前端框架
一颗宁檬不酸13 小时前
ajxa实例操作
前端·ajax·api