问题描述:
今天和公司前端工程师对接一个简单项目时(前后端分离,使用nginx 代理),前端请求后台服务接口总是提示:403 资源不可用。
nginx 配置文件如下:
server {
listen 7098;
server_name 192.168.1.74 localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root C:/nginx/nginx-1.14.0/baoan;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location ~/baoan{
#Proxy Settings
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Methods *;
proxy_redirect off;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_pass http://192.168.1.74:8098;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
我们反复检查了:前端访问路径地配置和后端项目访问地址的配置数据
前端请求地址:http://192.168.1.74:7098/baoan/**,对应后端实际请求地址: http://192.168.1.74:8098/baoan/**
IP 和端口的映射可以通过nginx 代理配置可以看出来,现在就剩一个前端项目名称地址与后端服务项目名称不一致。
SpringBoot 项目部署配置文件如下(Springboot版本为:2.1.2.*****):
原项目名称配置访问:(错误)
application.properties:
server.context-path=/baoan
修改项目名称配置访问:(正确)
application.properties:
# 指定服务 名称
server.servlet.context-path=/baoan
总结:
SpringBoot版本 | 配置 |
---|---|
1.x | server.context-path=/demo |
2.x | server.servlet.context-path=/demo |
以下为本地测试可行代码
pom.xml中使用SpringBoot版本
<version>1.5.9.RELEASE</version>
application.properties文件添加
server.context-path=/demo
pom.xml中使用SpringBoot版本
<version>2.0.2.RELEASE</version>
application.properties文件添加
server.servlet.context-path=/demo