在现代网站架构中,合理的域名解析和访问控制显得尤为重要。许多开发者和运维人员希望通过配置 Web 服务器,确保用户只能通过带有 www
的域名访问网站,而裸域名(即不带 www
的域名)则被重定向或禁止访问。Nginx 作为一款高性能的 Web 服务器,提供了简单而强大的配置能力,能够轻松实现该需求。
什么是裸域名和 www 域名?
裸域名是指没有子域名的直接域名,例如 example.com
。而带有 www
的域名即为 www.example.com
。通常,访问者在浏览器中输入网址时,可能不加 www
前缀,出于用户体验和 SEO(搜索引擎优化)的考虑,我们希望统一访问入口,避免重复内容引起的索引问题。
Nginx 配置示例
在 Nginx 中,通过配置不同的 server 块(虚拟主机)可以很方便地管理访问请求。以下是实现只允许 www
域名访问并禁止裸域名访问的具体示例。
1. 创建 Nginx 配置文件
假设您正在配置一个名为 example.com
的站点,您可以在 Nginx 的配置文件(通常位于 /etc/nginx/sites-available/
和 /etc/nginx/sites-enabled/
)中添加以下内容:
server {
listen 80;
server_name example.com; # 裸域名
# 将裸域名重定向到 www 域名
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com; # www 域名
location / {
# 网站根目录,修改为实际路径
root /var/www/example;
index index.html index.htm index.php;
# 其他 location 配置
}
# 此处可以增加其他配置,例如 PHP 支持、静态文件等
# location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# }
}
2. 配置解析
确保在您的 DNS 设置中,裸域名 example.com
和 www.example.com
都已正确解析到您的服务器 IP 地址。若希望裸域名自动重定向到 www
,在 DNS 中可考虑使用 CNAME 或 A 记录指向相应的 IP。
3. 重启 Nginx
在完成配置后,您需要重启 Nginx 以使配置生效:
sudo systemctl restart nginx
测试配置
- 打开浏览器,在地址栏输入
http://example.com
。您应该会被重定向到http://www.example.com
。 - 直接输入
http://www.example.com
,检查网站是否能够正常访问。
总结
通过 Nginx 的配置,您可以有效地管理域名访问,实现只允许 www 域名访问并禁止裸域名访问的需求。这不仅提升了用户体验,也有助于避免 SEO 问题。如果需要进一步的自定义,Nginx 支持丰富的模块和配置指令,能够满足不同场景下的需求。希望本篇文章能帮助到需要相关配置的开发者们。