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

如何配置Nginx将子域名portfolio.jamelaumn.com重定向至localhost/portfolio

Nginx子域名定向到指定路径配置方案

需求

访问portfolio.jamelaumn.com时,将请求转发到本地服务的/portfolio路径,当前Nginx配置如下:

server {
    listen 80;
    server_name jamelaumn.com *.jamelaumn.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name jamelaumn.com *.jamelaumn.com;
    ssl_certificate /etc/letsencrypt/live/jamelaumn.com-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jamelaumn.com-0001/privkey.pem;


    location /static/ {
        alias /home/jamelaumn/myproject/deploystatic/;
    }

    location /media/ {
        alias /home/jamelaumn/myproject/media/;
    }
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

解决方法

要实现这个需求,核心是利用Nginx精确域名匹配优先级高于通配符的规则,在现有配置前添加针对portfolio.jamelaumn.com的独立server块,具体修改如下:

1. 处理HTTP(80端口)请求

在原有80端口的通配符server块之前,添加单独的HTTP跳转规则,把HTTP请求转成HTTPS并修正路径:

server {
    listen 80;
    server_name portfolio.jamelaumn.com;
    # 跳转到HTTPS的对应路径,保留原请求参数
    return 301 https://$server_name/portfolio$request_uri;
}

2. 处理HTTPS(443端口)请求

同样在原有443端口的通配符server块之前,添加精确匹配的HTTPS代理配置,直接将请求转发到本地/portfolio路径:

server {
    listen 443 ssl;
    server_name portfolio.jamelaumn.com;
    # 复用原有SSL证书
    ssl_certificate /etc/letsencrypt/live/jamelaumn.com-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jamelaumn.com-0001/privkey.pem;

    # 复用原有静态资源规则(如果portfolio有独立静态资源可单独配置)
    location /static/ {
        alias /home/jamelaumn/myproject/deploystatic/;
    }

    location /media/ {
        alias /home/jamelaumn/myproject/media/;
    }

    location / {
        # 将请求转发到本地服务的/portfolio路径,保留原请求参数
        proxy_pass http://127.0.0.1:8000/portfolio$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

3. 保留原有通配符配置

原有的两个通配符server块可以继续保留,用于处理主域名和其他子域名的请求。

关键注意事项

  • 配置顺序很重要:精确匹配的server块必须放在通配符匹配的前面,否则Nginx会优先匹配通配符规则,导致新配置不生效。
  • 验证配置并重启:修改完配置后,先执行nginx -t检查语法是否正确,无误后执行systemctl reload nginx(或对应系统的重启命令)使配置生效。
  • 路径拼接细节:如果不需要保留原请求的$request_uri,可以把proxy_pass改成http://127.0.0.1:8000/portfolio/(记得加末尾的斜杠,避免路径拼接出错)。

内容的提问来源于stack exchange,提问作者Jamelaumn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:17:31