我在nginx config中有两个可以工作的位置:
location ^~ /media/ {
proxy_pass http://backend.example.com;
}
location ^~ /static/ {
proxy_pass http://backend.example.com;
}
如何将这两部分合并到一个位置?
我已经做了什么:
我尝试了这个建议
location ~ ^/(static|media)/ {
proxy_pass http://backend.example.com;
}
但这对我不起作用。
另外,当我不使用后端时,以下配置可以正常运行:
location ~ ^/(static|media)/ {
root /home/project_root;
}
更新(日志中的一些字符串)
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/font-awesome/css/font-awesome.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/css/custom.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/53$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/colorbox.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Sa$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/jquery.colorbox-min.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/js/scripts.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537$
解
实际上,我的解决方案工作正常:
location ~ ^/(static|media)/ {
root /home/project_root;
}
这个问题与后端无关。正如Guido Vaccarella正确注意到的那样,它紧随其后才location ~ ...
相匹配,所以我location ~ ...
没有机会跑步。
我不明白您的正则表达式代理通行证为什么不起作用。尝试时会发生什么?
—
脾气暴躁的人,2013年
当我尝试它时,前端nginx抛出404错误。
—
Vlad T.
location语句末尾的)是您的问题中的错误还是配置文件中的错误?
—
Guido Vaccarella
您应该仔细检查配置的其余部分是否有错误。另外,可能想通过查看它的外观,缺少的内容来调查为什么抛出404。也有可能在找不到错误文件的地方抛出404,因此需要查看之前抛出的错误。
—
脾气暴躁的
请提供从错误日志中的错误
—
穆罕默德AbuShady