我有一个域名bar.org及其子域名foo.bar.org。在这两个域后面运行一个Django网站,可通过gunicorn访问。
bar.org的配置是经典的,如下所示:
server {
listen 80;
server_name bar.org;
client_max_body_size 4G;
root /home/bar/dev/bar/;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 60;
proxy_pass http://127.0.0.1:8001/;
proxy_set_header REMOTE_ADDR $remote_addr;
}
}
我的问题涉及子域名foo.bar.org。我希望foo.bar.org/XXX的每个请求都被重写到我的Django网站的/ foo / XXX,并且从foo.bar.org/foo/XXX重写到/ foo / XXX。我尝试了一些URL重写命令,但它没有用。有没有人做过类似的nginx配置?
答案 0 :(得分:1)
一种可能的实现方式是:
server {
...
server_name foo.bar.org;
location / {
rewrite ^ /foo$request_uri last;
}
location /foo/ {
proxy_pass http://127.0.0.1:8001;
...
}
}
foo.bar.org
服务器块应该透明地代理/foo
的请求。请注意,我们从/
指令中删除了尾随proxy_pass
,以防止重写URI。
location /
块可确保重写未/foo
的URI。