nginx 如何获取请求的主机名

nginx 如何获取请求的主机名

您好,我正在尝试重定向所有请求以使用 https。我已创建了一个侦听端口 80 (http) 的服务器块,我想重定向用户以使用,https://但我不确定如何获取主机名。

这是我的服务器块

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

我知道可以通过 URI 访问,$request_uri但是我不确定如何获取主机名。

您是否将它们并排附加,且没有空格?

答案1

迈克尔·汉普顿 (Michael Hampton) 发布的链接更详细地解释了这些变量,但这里是一个直接的答案。

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

您可以使用 curl 并查看标题来看到它的工作原理。

http://bob.example.comhttps://bob.example.com

[root@hm1 conf.d]# curl --head bob.example.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.9.13
Date: Wed, 06 Apr 2016 02:01:24 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://bob.example.com/
Strict-Transport-Security: max-age=15780000; preload
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff

http://alice.example.comhttps://alice.example.com

[root@hm1 conf.d]# curl --head alice.example.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.9.13
Date: Wed, 06 Apr 2016 02:01:39 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://alice.example.com/
Strict-Transport-Security: max-age=15780000; preload
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff

相关内容