为什么只有默认服务器块才能在Nginx中执行

时间:2019-07-02 08:46:16

标签: nginx websocket reverse-proxy nginx-reverse-proxy

我做了什么:

我在可用站点中创建了prd.conf文件。
我在启用站点中为该文件创建了符号链接。
完成Nginx配置测试。
重新启动Nginx

场景:

如果我尝试通过app.com访问,它将登陆到app.com服务器(ip1)。
如果我尝试使用app1.com进行访问,它将登陆到app.com服务器(ip1)而不是ip2。
如果我尝试使用nginx-IP / socket访问,它仍然会落在app.com服务器(ip1)而非ip3上。

问题:

  1. .conf文件怎么了?
  2. 单独的.conf和一个.conf中的更多服务器块的行为相同吗?
  3. 如何在reverse-proxy.conf中访问服务器块, 没有server_name?

prd.conf

server {
  listen 80;
  server_name app.com ;
  location / {
     proxy_pass http://ip1;
  }
}

server {
  listen 80;
  server_name app1.com ;
  location / {
     proxy_pass http://ip2;
  }
}

server {
  listen 80;
  server_name ip3;
  location /socket/ {
      proxy_pass http://ip3;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
 }
}

server {
   listen 80;
   server_name _;
   return 404;
}

预期结果:

  1. app.com应该到达prd.conf中的服务器块1。
  2. app1.com应该到达prd.conf中的服务器块2。
  3. nginx-ip / socket /应该在reverse-proxy.conf中到达服务器块

0 个答案:

没有答案