我想将登录页面重定向到https,以便用户不会无意中通过未加密的网络输入凭据。我该如何做以下的事情?
# nginx.conf
server {
server_name example.org;
rewrite http://*.example.org/login https://example.org/login;
}
这适用于http://example.org/login,但不适用于http://www.example.org/login
重写
的规则输出rewrite http://.*\.?example.org/login https://example.org/login;
重写调试输出:
*2 "http://.*\.?example.org/login" does not match "/login", client: XXX.XXX.XX.72, server: example.org, request: "GET /user HTTP/1.1", host: "example.org"
答案 0 :(得分:4)
我删除了原来的答案,因为它要容易得多。您需要一个位置块和一个if用于此工作,以及一个catchall服务器域。结构如下:
server {
server_name example.org;
server_name *.example.org;
location /login {
if ( $scheme = http ) {
rewrite ^ https://example.org/login last;
}
}
}
尽管我讨厌在nginx中使用ifs,但这一次,这是必要的。