nginx反向代理重定向到错误的域

时间:2014-01-12 15:30:05

标签: node.js nginx

我正在使用本教程nginx reverse proxy tutorial来设置带有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; 
} 
}

问题是当我访问我的域时,它会重定向到我在同一台服务器上设置的另一个域。我使用使用服务器块的nginx virtual hosts tutorial设置其他域(静态页面)。 我注意到的一个区别是nginx反向代理教程没有在可用站点和启用的站点之间执行任何此符号链接,虚拟主机教程使用服务器块文件执行这些符号。虚拟主机教程指示读者创建服务器块文件,然后像这样启用它们

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

在使用nginx设置反向代理时,是否必须执行任何操作才能启用配置文件?如果没有,你知道为什么它会重定向到另一个域吗?

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

2 个答案:

答案 0 :(得分:1)

首先让我先简单介绍nginx如何与主机匹配,引用how nginx processes a request

  

在此配置中,nginx仅测试请求的标头字段   “主机”确定应将请求路由到哪个服务器。如果   它的值与任何服务器名称都不匹配,或者请求不匹配   根本包含此标头字段,然后nginx将请求路由到   此端口的默认服务器。

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

  1. 要么此反向代理虚拟主机名称错误,所以它不匹配,请求将定向到侦听端口80的第一个虚拟主机。
  2. 反向代理是正确的,但未加载配置。
  3. 要修复此问题,请检查此行是否正确server_name mydomain.com;并确实与您请求的网址相匹配,请确保重新加载nginx设置sudo service nginx reload

答案 1 :(得分:0)

问题是/etc/nginx/conf.d/mydomain.com.conf尚未复制到

/etc/nginx/sites-enabled