Nginx逻辑AND运算符

时间:2018-11-09 22:56:36

标签: nginx

您如何编写Nginx规则以将所有非https请求重定向到https(特定路径除外)?

我有一个不在SSL之下的健康检查路径,但是我希望其他所有内容都重定向到SSL,所以我需要一个规则,例如:

if ($http_x_forwarded_proto != 'https' && $request_uri != "/check.html") {
    return 301 https://$host$request_uri;
}

但是这给了我一个语法错误。 Google展示了几个用于执行逻辑OR表达式的示例,但没有显示AND的示例。 Nginx支持吗?

编辑:此服务器位于负载均衡器后面,所有请求都在端口80上转发,即使原始请求是https。我还需要此重定向才能使用配置如下的uwsgi应用程序:

location / {   
    uwsgi_pass  unix:///tmp/myapp.sock;
    include     /usr/local/myapp/uwsgi_params;
}

1 个答案:

答案 0 :(得分:1)

undefined部分可以转换为一对$request_uri != "/check.html"块。并在其中一个中放置一个简单的location块。

例如:

if

有关location / { if ($http_x_forwarded_proto != 'https') { return 301 https://$host$request_uri; } ... } location = /check.html { ... } 的使用,请参见this caution