You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenResty中将www域名重定向至非www域名?

解决OpenResty中www域名重定向到非www域名的问题

你的现有配置已经通过map指令定义了去掉www的域名变量$no_www_host,并且在HTTP(80端口)的跳转中用到了它,但缺少对HTTPS(443端口)下www域名的重定向处理,这就是直接访问https://www.yourdomain.com时不会跳转到非www地址的原因。

修改方案

只需在443端口的server块中添加重定向逻辑即可,具体修改后的完整配置如下:

http {
    lua_shared_dict auto_ssl 1m;
    lua_shared_dict auto_ssl_settings 64k;
    resolver 8.8.8.8 ipv6=off;
  
    map $host $no_www_host {
        default $host;
        "~^www\.(.*)$" $1;
    }
    init_by_lua_block {
        auto_ssl = (require "resty.auto-ssl").new()
        auto_ssl:set("allow_domain", function(domain)
        return true
        end)
        auto_ssl:init()
    }

    init_worker_by_lua_block {
        auto_ssl:init_worker()
    }
    server {
        listen 443 ssl;
        ssl_certificate_by_lua_block {
            auto_ssl:ssl_certificate()
        }
        ssl_certificate /etc/ssl/resty-auto-ssl-fallback.crt;
        ssl_certificate_key /etc/ssl/resty-auto-ssl-fallback.key;

        # 新增:处理HTTPS下的www域名重定向到非www
        if ($host != $no_www_host) {
            return 301 https://$no_www_host$request_uri;
        }

        location / {
            include proxy_params;
            proxy_pass http://unix:/run/ecommerce_demo.sock;
        }
    }

    server {
        listen 80;
        location /.well-known/acme-challenge/ {
            content_by_lua_block {
                auto_ssl:challenge_server()
            }
        }

        location / {
            return 301 https://$no_www_host$request_uri; # Redirect all HTTP to HTTPS
        }
    }

    server {
        listen 127.0.0.1:8999;
        client_body_buffer_size 128k;
        client_max_body_size 128k;

        location / {
            content_by_lua_block {
                auto_ssl:hook_server()
            }
        }
    }
}

关键说明

  • 新增的if ($host != $no_www_host)判断会检测当前访问域名是否带www,若带www则返回301永久重定向到去掉www的HTTPS地址。
  • 你的auto_ssl配置中allow_domain返回true,会自动为www和非www域名申请SSL证书,无需手动配置证书文件。
  • 修改完成后重启OpenResty使配置生效:
    sudo systemctl restart openresty
    

内容的提问来源于stack exchange,提问作者Sandeep Prasad Kushwaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:26:10