Nginx 对主机头的要求相冲突

Nginx 对主机头的要求相冲突

我尝试通过一个地址公开 Web 服务器的一部分,通过另一个地址公开另一部分。我觉得我的用例应该很简单,但 nginx 给我带来了很多麻烦。

我现在有的是:

服务器一:

server {
  listen 443 ssl;
  server_name mydomain.com;

  location /dev/subfolder {
    proxy_pass http://dev.mydomain.local/subfolder;
    proxy_redirect http:// https://;
  }
}

服务器二:

server {
  listen 80;
  server_name dev.mydomain.com;

  location /main {
    #some config
  }
  location /subfolder {
    return 404;
  }
}
server {
  listen 80;
  server_name dev.mydomain.local;

  location /subfolder {
    #some config
  }
}

问题是,如果我proxy_set_header Host $host向服务器一添加指令,服务器二上的第一个服务器块将接收请求并返回 404。如果我不包含该标头,我的浏览器将尝试导航dev.mydomain.local并失败,因为该域仅在内部可用。我该如何解决这个问题?

相关内容