nginx配置代理转发

场景:

在做前端项目的时候,希望前端的项目放在一个服务器上,如一个纯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服务器的配置就是普通的配置,不需要特殊处理

暂无评论

相关推荐

php 脚本指定参数

<?php $param_arr = getopt('a:b:'); $a = $param_arr['a'] 调用 php script.php -av1 -bv2 注 …

php时间戳添加时分秒等偏移

我们使用time()可以打印出时间戳,但是我们想要加个偏移,比如用于缓存等,我们就要添加时分秒的偏移,可以用下边的代 …

php重新安装curl扩展

因为我们的php不支持https,所以我们需要重新编译php,不过因为我们用的是M1,有一些问题待解决,最终失败在了php安装 …

微信扫一扫,分享到朋友圈

nginx配置代理转发