【问题标题】:nginx multiple route and different serversnginx多路由和不同的服务器
【发布时间】:2018-09-06 11:16:48
【问题描述】:

我需要在 / 和 (admin|api|auth) 上使用 nginx 将 SPA 应用程序配置为 django proxy_pass,这是我当前的 nginx 配置设置:

server {
    listen 80;
    server_name localhost;

    access_log  off;
    charset     utf-8;
    client_max_body_size 750M;

    location ^~ /static/ {
        root /opt/youtubeapp;
        expires max;
        break;
    }

    location ^~ /media/ {
        root /opt/youtubeapp;
        expires max;
        break;
    }

    location ~ ^/(robots\.txt|favicon\.ico\.html)$ {
        root /opt/youtubeapp/static/;
    }

    location / {
        root /opt/bulkvideo-front;
        expires max;
        break;
    }

    location ^~ /(admin|api|auth) {
        proxy_pass http://127.0.0.1:4600/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;

        # added 4 lines above. Remove or comment it if fail
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
        add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
        add_header Access-Control-Allow-Credentials true;

    }

}

我当前的配置有一个问题,当我的 SPA 向http://localhost/auth/signin/ 服务器发送请求时返回错误消息Page not foundRequest URL: http://localhost/signin/,问题是 nginx,因为没有发送完整的路由路径,我如何在 nginx 中解决这个问题?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    你只需要改变这个:

    proxy_pass http://127.0.0.1:4600/;
    

    到这里:

    proxy_pass http://127.0.0.1:4600;
    

    您添加到 proxy_pass 指令的任何内容,即使只是一个斜杠,都将替换原始请求 url 中与 location 块匹配的部分。

    【讨论】:

    • 你重新加载了 Nginx 吗?
    猜你喜欢
    • 2014-05-05
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多