账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Ngin+Node 请求代理如何区分前端静态资源代理与接口请求代理,跨域如何解决适合?
    33
    0

    如何使用Nginx反向代理请求能够将静态资源与接口请求区分开?

    本人纯前端一名,在扩展后端知识,打算使用Node+Nginx试着走后端知识,因为Node的优势在于处理I/O,所以打算将静态资源交给Nginx来代理

        # 静态资源虚拟主机
        server {
            # 侦听8130端口
            listen       8130;
            #定义使用 www.redcoat.com访问
            server_name  www.redcoat.com;
    
            #charset koi8-r;
            root /Users/gi/Desktop/BandApp/WWW/www.redcoat.com/dist;
            # 设定本虚拟主机的访问日志
            #access_log  logs/host.access.log  main;
    
            # 默认请求
            location / {
                # 定义服务器的默认网站根目录位置
                root   /Users/gi/Desktop/BandApp/WWW/www.redcoat.com/dist;
                # 定义首页索引文件的名称
                index  index.html index.htm;
            }
    
            # 静态文件,nginx自己处理
            location ~ ^/(images|javascript|js|css|flash|media|static)/ {
                
                #过期30天,静态文件不怎么更新,过期可以设大一点,
                #如果频繁更新,则可以设置得小一点。
                expires 30d;
            }
    
    
            # 定义错误提示页面
            error_page  404              /404.html;
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
        }

    疑问

    1. 先上代码,这是我在Nginx中的静态资源代理配置,代码也的确生效成功了但是如果我想请求的不是静态资源,而是后台的接口了?这样子配的话,岂不是我没加一个接口都要在这里配置一条路径匹配?(正确做法是怎样的?是像我写的下面那样解决吗?)
    2. 在未得到正确做法前,我思考了一下写前端时请求后台,我想到的是将后台的域名跟前台域名区分下,做一个子域名,这样前台请求接口就可以直接请求后台的域名接口,然后在Nginx中在代理下后台域名的请求,反向的Node应用中,可是这样做前端请求后端好像跨域了(之前以为子域名不会跨域),如果这样是正确的配置方法,那跨域问题后台怎么处理合适
    # 服务器虚拟主机
        server {
            # 侦听80端口
            listen       8130;
            #定义使用 www.redcoat.com访问
            server_name  node.redcoat.com;
    
            #charset koi8-r;
    
            # 设定本虚拟主机的访问日志
            #access_log  logs/host.access.log  main;
    
            # 默认请求
            location / {
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header Host $http_host;
               # proxy_set_header X-Nginx-Proxy true;
               proxy_set_header Connection "";
               # 代理目标的地址
               proxy_pass http://node.redcoat.com:8080;
            }
    
    
    
            # 定义错误提示页面
            error_page  404              /404.html;
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部