我使用namecheap购买了一个域名,为了简单起见,我们称之为example.com。 我在基于Debian的VPS上运行nginx。
我想设置以下配置
但是,我无法使用nginx来配置子域,或者我需要使用Namecheaps控制面板做什么?
这是我在Namecheap上的配置:
没有配置子域,我应该在这里配置子域名吗??
这是我的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
答案 0 :(得分:3)
您必须记住,设置DNS和配置nginx是完全不同的任务。
我喜欢设置DNS的方法是从CNAME
和其他子域返回到原始域www
,如果它们在逻辑上相同,并托管在同一台服务器上。 (但是,从技术上讲,这是不正确的,因为这意味着您指定所有域都有MX
条记录,以及显示可用于邮件的TXT
/ SPF
条记录但是没有人真正关心,所以,只要你没有将你的TLD本身作为CNAME
,事情应该没问题。)
您没有看到404
中的random.example.com
,因为第一个server
成为您的默认服务器。为了避免这种情况,您可能希望额外的server
上下文与listen
指令具有default_server
参数,您可以无条件地return 404;
查看所有请求。
您的最终server
上下文可能无法正常工作的原因可能是由于缺少listen
指令。通常有助于在所有服务器之间使用相同的listen
指令。