如何将 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
# ...
# ...
}