如何让nginx根据header的值进行重定向?
回答问题 我在 Cloudflare 代理后面托管一个网站,这意味着对我的服务器的所有请求都通过端口 80,即使 Cloudflare 处理 HTTP(端口 80)和 HTTPS(端口 443)流量。 为了区分两者,Cloudflare 包含一个X-Forwarded-Proto标头,该标头根据用户的连接设置为“http”或“https”。 我想将带有X-Forwarded-Proto: http
·
回答问题
我在 Cloudflare 代理后面托管一个网站,这意味着对我的服务器的所有请求都通过端口 80,即使 Cloudflare 处理 HTTP(端口 80)和 HTTPS(端口 443)流量。
为了区分两者,Cloudflare 包含一个X-Forwarded-Proto
标头,该标头根据用户的连接设置为“http”或“https”。
我想将带有X-Forwarded-Proto: http
标头的每个请求重定向到我网站的 SSL 版本。如何通过 nginx 配置实现这一点?
Answers
最简单的方法是使用if
指令。如果有更好的方法,请告诉我,正如人们所说的if
指令效率低下。 Nginx 将标头中的破折号转换为下划线,因此X-Forwarded-Proto
变为$http_x_forwarded_proto
。
server {
listen 80;
server_name example.com; # Replace this with your own hostname
if ($http_x_forwarded_proto = "http") {
return 301 https://example.com$request_uri;
}
# Rest of configuration goes here...
}
更多推荐
已为社区贡献15557条内容
所有评论(0)