让我们使用SSLredirect在nginx上使用webroot进行encryption

我有一个网站与nginx与以下要求:

  1. redirect所有http – > https
  2. 零停机让我们encryption证书更新

为了满足(1)我有一个小的http-> httpsredirect在我的nginxconfiguration。 为了满足(2)我将需要修改所述的configuration,以便我可以使用Webroot让我们encryption身份validation方法。

  • Nginx删除分块内容的内容长度头
  • php-fpm和nginx @高CPU使用率?
  • 基于用户代理的Nginxredirect
  • 可以这个服务器日志意味着我的服务器被用作代理?
  • 使nginx在反向模式下传递上游的主机名
  • 在Linux上使用ZFSencryption
  • 我试图找出满足这两个要求的最佳解决scheme。 我已经拿出了以下,这是有效的。

    之前:

     server { listen 80; server_name example.com; return 301 https://example.com$request_uri; } 

    后:

     server { listen 80; server_name example.com; location ~ /\.well-known\/acme-challenge { root /usr/share/nginx/html; allow all; } if ($request_uri !~ /\.well-known) { return 301 https://example.com$request_uri; } } 

    但是,我希望找出另一种方法。 原因是:

    1. 如果是邪恶的 。 在这种情况下可能不会这么大,因为这只是http-> httpsredirect,应该是非常低的stream量。

    2. 更重要的是,避免使用if会更容易将webrootauthenticationlocking到所有在nginx后面运行的站点,因为我可以在.conf中插入location指令,然后我可以在我所有的小型http- > httpsredirect块。

    在这个问题中 ,Alex给出了一个使用裸return语句的例子,但是这对我不起作用( nginx -tnginx: [emerg] invalid number of arguments in "return" directive in /etc/nginx/...抱怨nginx: [emerg] invalid number of arguments in "return" directive in /etc/nginx/... )。

    有没有更好的方法来做到这一点? 或者,我的解决scheme以上是如此好?

  • 将Nginxconfiguration为具有上游SSL的反向代理
  • Nginx到Apache的反向代理,指示使用unix套接字
  • 带有JSON响应的Nginx错误页面
  • 是否有编程接口到nginxconfiguration?
  • 一个复杂的nginx / php-fpm chroot设置
  • 当NGINX启用静态caching内容时,网站不加载静态文件
  • One Solution collect form web for “让我们使用SSLredirect在nginx上使用webroot进行encryption”

    你可以用普通的位置来代替if

     server { listen 80; server_name example.com; location /.well-known/acme-challenge { root /usr/share/nginx/html; allow all; } location / { return 301 https://example.com$request_uri; } } 

    原因:select并记住具有最长匹配前缀的位置。

    要查找匹配给定请求的位置,nginx首先检查使用前缀string(前缀位置)定义的位置。 其中,匹配前缀最长的位置被选中并记住。 然后按照它们在configuration文件中出现的顺序检查正则expression式。 正则expression式的search在第一次匹配时终止,并使用相应的configuration。 如果找不到正则expression式的匹配,则使用先前记住的前缀位置的configuration。

    来源: Nginx文档

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.