1

我想将我的登录页面重定向到 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"
4

1 回答 1

4

我删除了我原来的答案,因为它要容易得多。您需要一个 location 块和一个 if 才能使其工作,以及一个包罗万象的服务器域。结构如下:

 server {
   server_name example.org;
   server_name *.example.org;
   location /login {
       if ( $scheme = http ) {
          rewrite ^ https://example.org/login last;
       }
   }
 }

尽管我讨厌在即将到来的 nginx 中使用 ifs,但这一次,它是必要的。

于 2013-04-06T21:56:39.517 回答