nginx反向代理redirect到错误的域名

我正在使用本教程nginx反向代理教程来用nginx设置节点站点。 这是我的nano /etc/nginx/conf.d/mydomain.com.conf的样子

server { listen 80; server_name mydomain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } 

问题是,当我访问我的域时,它将redirect到另一个我在同一台服务器上设置的域。 我使用一个使用服务器块的nginx虚拟主机教程来设置其他域(一个静态页面)。 我注意到的一个区别是,nginx反向代理教程不会执行虚拟主机教程与服务器块文件所做的可用站点和站点之间的任何符号链接。 虚拟主机教程指导读者创build服务器块文件,然后像这样启用它们

 sudo ln -s /etc/nginx/sites-available/demo /etc/nginx/sites-enabled/demo 

在使用nginx设置反向代理时,我必须做任何事情来启用configuration文件吗? 如果没有,你知道为什么它redirect到其他领域?

 /etc/nginx/conf.d/mydomain.com.conf 

让我先从一个关于nginx如何匹配主机的小解释开始,引用nginx处理请求的方式

在这个配置中,nginx只测试请求的头部字段“主机”,以确定请求应该被路由到哪个服务器。 如果它的值与任何服务器名称不匹配,或者请求中根本不包含这个头域,那么nginx会将请求路由到这个端口的默认服务器。

根据你的描述,我会说有2种可能性,

  1. 要么是这个反向代理虚拟主机有一个错误的名称,所以它不匹配,并且请求被引导到在端口80上侦听的第一个虚拟主机。
  2. 反向代理正确,但配置未加载。

要解决这个问题,请仔细检查这一行是否正确server_name mydomain.com; 并确实匹配您请求的URL,然后确保您重新加载了nginx设置sudo service nginx reload

问题是/etc/nginx/conf.d/mydomain.com.conf没有被复制到

 /etc/nginx/sites-enabled