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;
}
}