场景:
在做前端项目的时候,希望前端的项目放在一个服务器上,如一个纯vue的一个项目,放在一个域名下。然后我们的拉口放在另一个服务器上,我们接口希望通过nginx的转发来解决跨域问题,这里就需要用到了nginx的代理转发功能
使用到的框架:
我们使用vue做的前端
使用tp5做的api
tp5的public/uploads目录下保存了前端上传的媒体资源
想法
前端调用api的子路径,经过前端服务器时,自动转发到api服务器,并且去除api的路径
查看uploads里的资源时,直接转发到api服务器的uploads目录
实现
简单的配置:
前端服务器配置(纯静态配置)
server {
listen 80;
server_name app.com;
root /Applications/MxSrvs/www/app.com;
include vhosts/_nginx.vhost.fpm;
location /api {
#利用正则进行匹配#去掉api前缀,$1是正则中的第一串,这样后端的接口也不需要带api了
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://appserver.com:8009;
}
location /uploads {
proxy_pass http://appserver.com:8009;
}
}
api服务器配置(TP5的php服务配置)
server {
listen 8009;
server_name appserver.com;
root /Applications/MxSrvs/www/appserver.com/public;
include vhosts/_nginx.vhost.fpm;
location ~ [^/]\.php(/|$) {
root /Applications/MxSrvs/www/appserver.com/public;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
}
api服务器的配置就是普通的配置,不需要特殊处理
暂无评论
要发表评论,您必须先 登录