今天在配置一个location的时候,希望使用一个变量如$host来指示nginx代理:
location /test/ { 如你想不到,这个配置是不能使用的,查看error.log,打出来的信息也无法帮助解决问题。 但相同情况下,root标签就工作得很好:
locatin /test/ { 令人匪夷所思,估计这是nginx的一个bug,或者是一个搅不清的逻辑? 把上面的错误配置改成
location /test/ { 或者
set $vhost "test.sudone.com"; 等等,都不能解决问题,最后是用了个奇怪的配置方式,居然能工作……
location /test/ { 这个配置就能工作正常,但上面这个配置只支持单ip的后端,能不能支持upstream呢? 再改一下测测
upstream backend.sudone.com {
location /test/ { 嗯?能用! 有了这个办法,我便不用在数十个主机配置内把/test/这个location贴上数十次,另外,它也可以支持这样的写法:
location /test/ { 还可以用正则表达式对host进行匹配:
set $vhost $host;
location /test/ { 可用的方面就广了。 --------------------------------------------------- 补充: 在这个配置里,我的nginx代理的后端(backend)也是nginx,目前尚不清楚其它的web服务器如apache等是否能在这样的配置下工作正常。 (责任编辑:IT) |