NGINX配置:实现带www与不带www域名跳转以运行Node.js
解决www.domain.com访问问题的两种配置方案
首先说明:Nginx中没有ServerAlias指令(这是Apache的配置项),对应多域名处理需求,Nginx有两种常用实现方式:
方案1:让www.domain.com与domain.com均指向后端服务
直接修改原server块的server_name字段,同时包含两个域名即可:
server { listen 80; listen [::]:80; server_name domain.com www.domain.com; # 同时指定主域名和www子域名 proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass "http://localhost:3000/"; } }
配置生效后,访问两个域名都会直接转发到localhost:3000的服务。
方案2:将www.domain.com永久重定向到domain.com(推荐)
如果希望统一访问入口、避免搜索引擎收录重复内容,建议用301永久重定向。保留原主域名配置,新增一个专门处理www域名的server块:
# 原主域名服务配置 server { listen 80; listen [::]:80; server_name domain.com; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass "http://localhost:3000/"; } } # www域名重定向配置 server { listen 80; listen [::]:80; server_name www.domain.com; return 301 $scheme://domain.com$request_uri; }
这种方式会将所有访问www.domain.com的请求,永久跳转到domain.com的对应路径,同时传递原请求的URI参数。
配置生效步骤
修改完成后,先执行配置语法检查:
nginx -t
确认输出test is successful后,重载Nginx使配置生效:
systemctl reload nginx # 或使用service命令(取决于系统) service nginx reload
内容的提问来源于stack exchange,提问作者eRevolute
相关产品推荐
相关产品推荐

