如何将NGINX请求从非WWW重定向到WWW
时间:2020-01-09 10:39:34 来源:igfitidea点击:
说明
在本教程中,我们将学习如何在NGINX中使用重定向将流量强制到www域。
HTTP重定向
HTTP请求可能有两种重定向类型。第一个是状态302,在维护站点或者从临时平台托管时临时使用该状态。
第二种重定向是状态301,它是永久重定向。这指示Web浏览器和Web搜寻器输入的URL不再有效,并且内容已永久移动。
将非WWW重定向到WWW
要重定向流量,NGINX必须首先监听非WWW的请求。为此,我们将创建一个侦听器来捕获此类流量。一旦被捕获,流量将被重定向到正确的主机名。
捕获非WWW流量
以下示例NGINX虚拟服务器将监听名为theitroad.com的域的非WWW通信。
server { listen 80; server_name theitroad.com return 301 http://www.theitroad.com$request_uri; }
上面的虚拟服务器在端口80上侦听针对theitroad.com的任何请求。然后,使用return指令重定向此侦听器捕获的所有流量。
返回直接将状态设置为301,以传达内容已永久移动。返回指令包含一个变量$ request_uri,该变量添加到目标URL。这指示NGINX将传入请求的整个URI添加到重定向。
监听WWW流量
NGINX还必须侦听WWW流量。我们创建第二个虚拟服务器来处理此请求。
server { listen 80; server_name www.theitroad.com location / { proxy_pass http://backend } } upstream backend { ip_hash; server app01:8080; server app02:8080; }
测试重定向
可以使用Web客户端(例如Web浏览器或者curl命令)测试重定向。从浏览器重定向到非WWW重定向到WWW是足够可见的。
但是,使用类似这样的命令可以提供有关如何处理请求的更多详细信息。要验证重定向是否正常工作,可以使用以下命令。
curl -IL http://theitroad.com/
该命令的输出将类似于以下示例。要注意的关键行项目是HTTP / 1.1 301永久移动行。这让我们知道重定向正在按预期工作。
HTTP/1.1 301 Moved Permanently Server: nginx/1.14.0 (Ubuntu) Date: Wed, 29 May 2019 03:43:15 GMT Content-Type: text/html Content-Length: 10918 Last-Modified: Mon, 27, May 2019 22:49:05 GMT Connection: keep-alive