1.今天在测试遇到一个nginx反向代理后端ip,为前端提供服务后,swagger失效报错500,并且显示地址是前端服务器地址。
前端服务器:0.0.0.1
后端服务器:0.0.0.2
访问swagger 接口ip一直为:0.0.0.1
解决办法:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
完整配置如下:
#如果ip以/apiapp/结尾,反向代理proxy_pass 的地址。此处在vue前端对应VUE_APP_BASE_API = '/apiapp'
location /apiapp/ {
proxy_pass http://0.0.0.1:8090/; #后端服务器ip 反向代理
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header REMOTE-HOST $remote_addr;
#proxy_redirect off;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
vue前端代码配置:
.env.test
#VUE_APP_BASE_API = '/apiapp' #此处对应nginx代理块
# 路由基础路径 test
VUE_APP_BASE_URL = '/'
2.如何以一台nginx 部署2套前端代码?
可以创建两个server,分别部署不同的前端代码
如下:
upstream app_api {
server 0.0.0.1:8090;
check interval=5000 rise=1 fall=3 timeout=4000;
}
# 手机端-前端页面
server {
listen 3000;
server_name 0.0.0.2;
underscores_in_headers on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Request-ID $request_id;
real_ip_header X-Forwarded-For;
client_max_body_size 20M;
proxy_connect_timeout 300;
#后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout 300;
#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout 300;
# 手机端-前端页面
location / {
alias /home/app/nginx/html/; # 前端静态文件目录
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/{
proxy_pass http://172.16.171.139:8090;
proxy_set_header Host $host:$server_port;
# proxy_set_header Host $http_host;
proxy_set_header Connection close;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
client_max_body_size 20M;
}
}
#后台管理-前端页面
server {
listen 8091;
server_name 0.0.0.2;
index index.php index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
real_ip_header X-Forwarded-For;
location /apiapp/ {
proxy_pass http://0.0.0.1:8090/;
# proxy_set_header Host $http_host;
#proxy_set_header Connection close;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-Server $host;
#client_max_body_size 2000M;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header REMOTE-HOST $remote_addr;
#proxy_redirect off;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 后台管理-前端页面
location / {
alias /home/app/front/dist/; # 前端静态文件目录
index index.html;
try_files $uri $uri/ /dist/index.html;
}
}