【发布时间】:2014-07-21 11:11:15
【问题描述】:
我使用 namecheap 购买了一个域名,为了简单起见,我们将其命名为 example.com。 我在基于 Debian 的 VPS 上运行 nginx。
我要设置如下配置
- (www).example.com 点:到 var/www/blog
- (www).static.example.com :指向 var/www/static
但是,我无法使用 nginx 配置子域,或者我需要使用 Namecheaps 控制面板来做这些事情?
这是我在 Namecheap 上的配置:
- @111.111.111.111 记录类型:A TTL:1800
- www example.com 记录类型:Cname/Alias TTL:1800
没有配置子域,我应该在这里配置子域吗!?
这是我的 nginx 配置:
server {
root /var/www/blog;
index index.html index.htm;
server_name localhost example.com www.example.com;
location / {
index index.html index.htm;
}
}
server {
root /var/www/static;
index index.html index.htm;
server_name static.example.com www.static.example.com;
location / {
index index.html index.htm;
}
但是这会导致以下结果:
www.example.com 指向正确的目的地
random.example.com 指向 www.example.com(我不希望发生这种情况,它应该返回 404)
static.example.com 给我一个错误 400。如果我查看我的日志,它找不到文件 /var/www/blog/static/index.html,而实际上我希望它指向到 /var/www/static/index.html
【问题讨论】:
-
是的,在 Namecheap 的 DNS 设置中创建一个“静态”子域。
-
@Chris “静态”子域应该指向哪里?只需到我的 VPS 的 IP 地址,然后从那里在 nginx 上就能弄清楚吗?
-
是的!您已经添加了“server”指令来捕获 static.example.com 并将请求指向 /var/ww/static 目录。有趣的是:所以实际上任何人都可以将任何子域指向任何地方的任何服务器。但是如果服务器所有者没有在配置文件中添加必要的指令,并且如果您尝试访问未在 nginx 或 Apache 中配置的子域(或域),那么浏览器只会说,“不能找到 example.domain.com"。
-
@Chris 谢谢!这解决了我的问题,我忘了在 Namecheap 中配置子域。
-
@user3486416,您好,如果我的回答解决了这个问题,如果您能点击接受按钮将这个问题标记为已解决,我将不胜感激,谢谢! (您还会因接受答案而获得一些额外积分。)
标签: nginx configuration dns subdomain