nginx如何配置可以让顶级域名跳转到www域名上?

想让用户访问test.com的时候强制跳转到www.test.com上 下面这样写不行 请问应该怎么改?

server{                                                     
         listen 80;
         server_name test.com;
         return 301 https://www.test.com$uri;
}

server {
        listen 443 ssl;
        server_name test.com;
        client_max_body_size 20M;
        ssl on;
        ssl_certificate /etc/nginx/ssl/test.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/test.com.key;
        set $root_path '/aaa/spa';
        root $root_path;
      
阅读 1.3k
4 个回答
server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name test.com;
  ssl_certificate            /path/to/your/cert.pem;
  ssl_certificate_key        /path/to/your/key.pem;
  return 308 https://www.test.com$request_uri;
}

server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name www.test.com;
# ... SNIP ... #
}
server{                                                     
         listen 80;
         server_name test.com;
         return 301 https://www.test.com$request_uri; # 修改此处变量
}

# 添加此处
server {
    listen 443;
    server_name  test.com;
    ssl_certificate /etc/nginx/ssl/test.com_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/test.com.key;
    return       301 https://www.test.com$request_uri;
}

server {
        listen 443 ssl;
        server_name www.test.com;  # 修改此处
        client_max_body_size 20M;
        ssl on;
        ssl_certificate /etc/nginx/ssl/test.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/test.com.key;
        set $root_path '/aaa/spa';
        root $root_path;
      

server 节点下

if ($host ~ '^test.com'){
    return 301 https://www.test.com$request_uri;
}
if ($host ~ '^test.com'){
    return 301 http://www.test.com$request_uri;
}

说明 host 是以 test.com 开头的,那么重定向

试试这个呢:# 处理HTTP重定向
server {

listen 80;
server_name test.com;
return 301 https://www.test.com$request_uri;

}

处理HTTPS重定向

server {

listen 443 ssl;
server_name test.com;

ssl_certificate /etc/nginx/ssl/test.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/test.com.key;

# 建议包含SSL参数以增强安全性
include /etc/nginx/snippets/ssl-params.conf;

return 301 https://www.test.com$request_uri;

}

www.test.com的配置

server {

listen 443 ssl http2;
server_name www.test.com;

client_max_body_size 20M;

ssl_certificate /etc/nginx/ssl/test.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/test.com.key;

# 包含SSL参数
include /etc/nginx/snippets/ssl-params.conf;

# 定义根目录
set $root_path '/aaa/spa';
root $root_path;

# 其他配置...

}

推荐问题