Nginx 重写服务器名称和端口

Nginx 重写服务器名称和端口

Nginx 可以在将完整的 URL 提供给客户端之前重写它吗?

我有一个连接到 minio 后端的 Django 服务器,由 Nginx 提供服务。
服务器“www.abc.com”主页包含带有“www.minio.com:9000/static/my.css”的 URL
,我想将其重写为“www.abc.com/static/my.css”,
然后我就可以使用 proxy_pass 访问原始的 www.minio.com:9000/static/my.css

我一直尝试在服务器中使用 Nginx 重写子句,但没有成功。

upstream uwsgi {
    server 127.0.0.1:7999;  
}

server {
    listen 80;
    server_name www.abc.com;

    rewrite www.minio.com:9000 www.abc.com;

    location / {
        uwsgi_pass uwsgi; 
    }

    localtion /static {
        proxy_pass www.minio.com:9000/;
    }

}

答案1

感谢 sub_filter 和其他编辑的推荐,到目前为止这似乎对我有用:

upstream uwsgi {
    server 127.0.0.1:7999;  
}

server {
    listen 80;
    server_name www.abc.com;

    sub_filter 'www.minio.com:9000' '';

    location /static/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass www.minio.com:9000;
    }

    location /media/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass www.minio.com:9000;
    }

    location / {
        uwsgi_pass uwsgi; 
    }
}

相关内容