Nginx的位置和重写

我正在处理以下问题,我无法解决它。 我在运行nginx的应用程序服务器场前面有HAproxy。 HAproxy为后端服务启用了一些httpchecks – 检查命中/ health_check URI:

option httpchk HEAD /health_check HTTP/1.1\r\nHost:\ staging.example.com 

我想不出的是如何避免为所有URI启用永久重写的虚拟主机的日志logging。 这里是例子

 server { listen 8000; server_name ""; location = /health_check { access_log off; return 200; } rewrite ^(.*) https://staging.example.com$1 permanent; } 

我以为上述位置指令将禁用给定的URI日志,但我错了 – 它被完全忽略。

有什么办法如何去实现这样的事情?

rewrite放在一个location /块。

 location / { rewrite ^(.*) https://staging.example.com$1 permanent; } 

这样,它将匹配除/health_check (具有更具体location之外的所有URL。

如果你不需要正则expression式,你也可以返回而不是用location /块重写。

 location / { return 301 $scheme://staging.example.com$request_uri; }