use*_*416 6 subdomain dns configuration nginx
我使用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;
}
Run Code Online (Sandbox Code Playgroud)
然而,这导致以下情况:
www.example.com指向正确的目的地
random.example.com指向www.example.com(我不希望这种情况发生,它应该返回404)
static.example.com给我一个错误400.如果我查看我的日志,它找不到文件/var/www/blog/static/index.html,而实际上我希望它指向/ var/www /静态/ index.html的
您必须记住,设置 DNS 和配置 nginx 是完全不同的任务。
我喜欢设置 DNS 的方法是CNAME从www子域和其他子域返回到原始域(如果它们在逻辑上相同并且托管在同一服务器上)。(但是,从技术上讲,这是不正确的,因为这意味着您指定您的所有域都有MX记录,以及显示它们可以用于邮件的TXT/SPF记录。但没有人真正关心,所以,只要您不这样做将您的 TLD 本身设置为CNAME,一切应该没问题。)
您看不到404发件人random.example.com,因为第一个服务器server成为您的默认服务器。为了避免这种情况,您可能需要一个带有参数的指令server的额外上下文,您可以在其中无条件地处理所有请求。listendefault_serverreturn 404;
您的最终上下文可能无法正常工作的原因server可能是由于缺少listen指令。listen在所有服务器之间拥有相同的指令通常会有所帮助。
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |