使用nginx和docker发送CNAME

使用nginx和docker发送CNAME,docker,nginx,amazon-ec2,devops,Docker,Nginx,Amazon Ec2,Devops,我试图实现api.com=>api.myapp.com,但没有成功 主nginx在docker上的aws/ec2上运行,并监听端口80 server { listen 80; server_name myapp.com; location / { proxy_pass http://app:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Fo

我试图实现
api.com=>api.myapp.com
,但没有成功

主nginx在docker上的aws/ec2上运行,并监听端口80

server {
    listen 80;
    server_name myapp.com;
    location / {
        proxy_pass http://app:80/;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}

server {
    listen 80 l;
    server_name api.myapp.com;
    location / {
        proxy_pass http://api:80/;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}
myapp.com已配置域

A记录=>@(主机)=>1.10.10.30(aws-ec2/ip)

记录=>api(主机)=>1.10.10.30(aws-ec2/ip)

使用此配置,它可以正常工作。访问
myapp.com
解析
app
api.myapp.com
解析api服务

(我希望到目前为止一切正常,所以如果这样做是错误的,请告诉我)

问题 现在,我想用
CNAME
api.myapp.com
配置
api.com
。 我找到我的域管理器(godaddy)并设置为:

CNAME
=>
www
=>
api.myapp.com

当我访问
api.com
时,它会解析
myapp.com
而不是
api.myapp.com


我该怎么办?

api.com
未列在
server\u name
指令中,因此Nginx将使用默认的服务器块,它恰好是第一个。感谢您的回复。如果我要在我的nginx中配置它。使用CNAME配置
api.com
的目的是什么?为什么我不能用记录
api.com
=>
ec2/ip
?有什么区别?CNAME或记录对Nginx没有区别。CNAME需要两次DNS查找,因此效率低于A记录。如果您可以控制服务的IP地址,您还可以使用A记录。如果其他人控制了IP地址并定义了A记录来指向它,那么使用CNAME可能会更有效,这样您就不必担心IP地址是否会发生变化。谢谢,我这么问是因为我看到()shopify要求您配置CNAME和A-record。。。我想知道为什么他们两个都要?我错过了什么?。。。这就是我最后想要达到的目标
customer.com
==>
customer.myapp.com
就像shopify那样没问题