如何在nginx中强制或重定向到SSL?

Modified on: Tue, 12 Nov 2019 22:00:02 +0800

我在子域名上有一个注册页面,如:https://signup.example.com

它应该只能通过HTTPS访问,但我担心人们可能会以某种方式通过HTTP偶然发现并获得404.

我在nginx中的html / server块看起来像这样:

html {
  server {
    listen 443;
    server_name signup.example.com;

    ssl                        on;
    ssl_certificate        /path/to/my/cert;
    ssl_certificate_key  /path/to/my/key;

    ssl_session_timeout 30m;

    location / {
      root /path/to/my/rails/app/public;
      index index.html;
        passenger_enabled on;
    }
  }
}

我可以添加哪些内容,以便转到http://signup.example.com的用户重定向到https://signup.example.com? (仅供参考我知道有Rails插件可以强制SSL,但希望避免这种情况)

最佳答案

根据nginx陷阱,省略稍微好一点不必要的捕获,改为使用$request_uri。在这种情况下,附加一个问号以防止nginx加倍任何查询参数。

server {
    listen      80;
    server_name signup.mysite.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

相关问答

添加新评论