我正在寻找设置一个nginx反向代理,使一些即将到来的服务器移动和负载均衡的实现更容易在我们的应用程序。 由于我们的服务器都是IIS大小写敏感性不是问题,但现在与nginx它成为我的一个。 无论如何,我只是想重写一遍。
基础设施说明
由于以下错误,我无法将我的位置设置为不区分大小写:
nginx:[emerg]“proxy_pass”不能在正则expression式给出的位置,或指定位置内,或者if语句内,或者在/etc/nginx/sites-enabled/test.conf中的“limit_except” :101
我正在尝试处理重写的conf文件的主要部分如下所示
location /svc_test { proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header host $http_host; proxy_pass http://backend/serviceSite/WFCService.svc; } location ~* /test { rewrite ^/(.*)/$ /svc_test/$1 last; }
这是我无法弄清楚的testing位置。 如果我打电话给http://nginxserver/svc_test/help我得到WCF帮助页面正确显示,我可以做所有可用的REST调用。 这是我的一个头脑的正则expression式的问题,但我已经尝试了几个变化,所有我可以得到从Nginx的404或500错误。 这不是火箭科学,所以有人可以指引我正确的方向,所以我可以看起来像一个白痴,只是继续前进?
最后正确的正则expression式,让我想去的地方是
rewrite ^/([^/]*)(.*)$ /svc_test$2;
这有以下结果:
我(显然)远不是一个stream利的正则expression式的人,所以这可能不是处理不区分大小写重写的最佳方式,但它确实做了我期望完成的一切。 我想补充的唯一的一点是重写/testing/到/testing,以防止任何错误页面,但这不会影响服务调用。