在 nginx 中将非本地连接重定向到 HTTPS

在 nginx 中将非本地连接重定向到 HTTPS

我正在尝试在远程连接上强制使用 HTTPS,并将所有非来自网络的流量转发192.168.0到 https://$host$request_uri,但允许在本地连接上进行访问。

在 apache2 中我有

Order allow,deny
Allow from 192.168.0
Allow from 127
Deny from all

在 HTTP 主机的配置中,在收到 403 后必须手动更改为 HTTPS。

理想情况下,由于我设置了很多子域,所以我想将一些代码添加到 HTTP 部分而不是每个服务器中。

我已经读过这个问题并且知道我可以添加

return 301 https://$host$request_uri;

但这样所有流量都会被转发。我只想转发远程连接。主要是为了减少本地连接的开销。

答案1

我找到了一个解决方案HttpGeo模块

通过增加 (来源

geo $remote {
    default http;
    192.168.0.0/24 0;
    127.0.0.0/8 0;
}

到我的 http 部分并添加

if ($remote = $scheme) {
    return 301 https://$host$request_uri;
}

对于我的默认代码片段,我实现了我想要的。

相关内容