Nginx:重写规则以重定向到https页面

时间:2013-04-06 21:07:15

标签: nginx rewrite

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

1 个答案:

答案 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,但这一次,这是必要的。