Nginx 位置和重写

Nginx 位置和重写

我正在处理以下问题,但不知道该如何解决。我在运行 nginx 的应用服务器群前面安装了 HAproxy。HAproxy 为后端服务启用了一些 httpchecks - 检查正在命中 /health_check URI:

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

我不知道如何避免对所有 URI 启用永久重写的虚拟主机进行日志记录。以下是示例

server {
  listen      8000;
  server_name "";

  location = /health_check {
    access_log off;
    return 200;
  }

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

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

有什么方法可以完成这样的事情吗?

答案1

将其放入rewrite一个location /块中。

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

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

答案2

location /如果不需要正则表达式,您也可以返回而不是使用块重写。

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

相关内容