在nginx配置文件中仅将www请求重定向到https

问题描述 投票:0回答:1

我有一个在EBS上运行的节点应用程序,我想强制执行https。我使用以下命令覆盖了nginx配置文件

server_name www.mydomain.com; if ($http_x_forwarded_proto != "https") { rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent; }

这工作正常,但我有一个dev.mydomain.com的独立开发域,我想通过http而不是https连接。

是否有一个nginx前缀变量可以访问做类似的事情...

server_name www.mydomain.com; if ($http_x_forwarded_proto != "https" && $uri_prefix == 'www') { rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent; }

nginx
1个回答
0
投票

Nginx不允许多个或嵌套的if语句

你可以尝试这种配置,但......它不是那么优雅

if ($http_x_forwarded_proto != "https") {
   set $myvar http;

}
if ($host ~ ^www) {
   set $myvar "${myvar}www";
}

if ($myvar = 'httpwww') {
  rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
}

`

© www.soinside.com 2019 - 2024. All rights reserved.