前言:记录nginx配置时出现的问题及解决方法

禁止重定向

访问的nginx配置为/api/ 后端接口时,还有一个是访问到主页 ,如果我们通过浏览器发送get请求 /api/***时,请求接口找不到后,他在第一个找不到的时候会按顺序找下面的,按下方的写法,这样他会跳转至首页页面,但是我们需要让他返回/api/对应的接口值

未修改前的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
# HTTPS server
#
server {
#小程序接口
location /api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass http://ip:端口/;
}
#主页
location / {
proxy_pass http://ip:端口/home/;
}
}

修改之后的配置,在对应的转发里添加proxy_redirect off;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# HTTPS server
#
server {
#小程序接口
location /api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass http://ip:端口/;
proxy_redirect off;
}
#主页
location / {
proxy_pass http://ip:端口/home/;
}
}

这样的话,当请求https://changruyi.com/api/word/getRandomWord 不会跳转到https://changruyi.com/

将客户端的真实 IP 地址传递给后端应用程序

在请求后端接口的时候,接口由客户端发送到服务器通过nginx,转发到后端接口,后端获取ip会直接获取到服务器的ip地址,需要将客户端的真实ip传递给后端

修改前

1
2
3
4
5
location /api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass http://ip:端口/;
proxy_redirect off;
}

修改后

1
2
3
4
5
6
7
8
9
location /api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass http://ip:端口/;
proxy_redirect off;
# 将客户端的真实 IP 地址传递给后端应用程序
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}