当用户访问www.website.com时,我希望像访问过www.website.com/frontend/一样来存储内容。但是,我想屏蔽URL的/ frontend /部分,以便用户看不到它。能做到吗?
我的重写规则是什么样的?
已解决:
location = / {
rewrite ^/$ /frontend/ last;
}
我的问题是
location = / {} #Matches the path project.example.com only (mind there is a =)
location / {} #Matches every path (mind: there is no =)
答案 0 :(得分:0)
已解决:
location = / {
rewrite ^/$ /frontend/ last;
}
我的问题是
location = / {} #Matches the path project.example.com only (mind there is a =)
location / {} #Matches every path (mind: there is no =)
答案 1 :(得分:0)
您不需要为此重写规则。只需使用
location / {
proxy_pass http://<your_backend>/frontend/;
}
答案 2 :(得分:0)
我认为使用rewrite
并不是完美的解决方案(顺便说一句,我认为它不能涵盖您问题的所有方面并可能导致新问题)
解决方法如下:
nginx配置应如下所示:
upstream django {
server unix://tmp/gunicorn.sock; //
}
server {
listen 80;
server_name <your_app_domain_here>;
location /frontend {
include uwsgi_params;
proxy_pass http://django/;
}
}
,或者如果您不使用sock
文件,则可以使用http方法。例如,如果您在本地主机上使用端口8000运行django,则将其更改为:
proxy_pass http://localhost:8000/;
但是请记住,您应该将其添加到Django settings.py
中。除非它根本不起作用:
USE_X_FORWARDED_HOST = True
FORCE_SCRIPT_NAME = "/frontend"
通过这种方法,您正在django中更改基本URL。因此所有django网址都应以fronted
标签开头。现在,nginx可以完美地充当您网站的反向代理了:)