我有一个在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不允许多个或嵌套的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;
}
`