将 Nginx 网站上的某些路径的 http 重定向到 https

将 Nginx 网站上的某些路径的 http 重定向到 https

如何将 Nginx 托管网站上的某些路径从 http 重定向到 https?

我想确保所有访问路径“/admin”的人都使用 https。谷歌搜索找到了我几位导游关于如何添加全局重写规则,但我找不到有关如何为特定站点添加重写规则的任何信息。

我看到的所有示例都使用了server{}站点配置文件中不允许的语法。站点特定的等效语法是什么?

我有一个负载均衡器,它接受 443 个连接,执行所有 SSL 处理,并将请求转发到端口 80 上的服务器,因此 Nginx 实际上不需要在端口 443 上处理请求。它只需要看到请求最初来自 http 并将用户重定向到 https。以前,我在 Apache 中使用重写规则执行此重定向,例如:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Nginx 中的对应项是什么?

答案1

Nginx 中的等效配置是......

if ( $x-forwarded-proto != 'https' ) return https://$host$request_uri; }

请注意“使用 if 并不邪恶“如果使用得当。

如何将 Nginx 托管网站上的某些路径从 http 重定向到 https?

location /pathtoredirect { return https://$host$request_uri; }

因此,针对您的具体情况,解决方案如下......

location /admin {
  if ( $x-forwarded-proto != 'https' )
    return https://$host$request_uri;
  }

  # directives to process /admin when accessed via https
  # ...
  # ...
}

相关内容