有人能解释一下为什么 nginx 文档中这么说吗?为什么它“繁琐且无效”?
重定向至主站点
在共享主机使用期间,人们习惯仅使用 Apache 的 .htaccess 文件来配置所有内容,通常会遵循以下规则:
RewriteCond %{HTTP_HOST} nginx.org
RewriteRule (.*) http://www.nginx.org$1
to something like this:
server {
listen 80;
server_name www.nginx.org nginx.org;
if ($http_host = nginx.org) {
rewrite (.*) http://www.nginx.org$1;
}
...
}
这是一种错误、繁琐且无效的方法。正确的方法是为 nginx.org 定义一个单独的服务器:
server {
listen 80;
server_name nginx.org;
return 301 http://www.nginx.org$request_uri;
}
server {
listen 80;
server_name www.nginx.org;
...
}
答案1
因为每次你在第一个选项中访问网站时,它都会重新检查主机头是否重定向你。而在第二个选项中,它不会发生,并会将一些 CPU 周期发送到垃圾桶。
:)