我有两个应用程序在服务器上工作完美,直到我打算切换到HTTPS。
Nginxconfiguration为应用程序1:
server_name abc.com my.abc.com static.abc.com
正在讨论应用2:
server_name _;
在启用SSL之前,两个应用程序都在工作,
App1 http://static.abc.com/some-assets.png
App2 http://static.def.com/some-assets.png
启用SSL后
App1 https://static.abc.com/some-assets.png
App2 https://static.def.com/some-assets.png
如果我尝试访问App2 https://static.def.com/some-assets.png现在也以某种方式指向App 1。
我试图挖掘,发现如果我replaceserver_name _; 用server_name static.def.com; 在应用程序2 Nginx的configuration开始工作。
我的问题是,如果你想通过HTTPS提供服务,Nginx是否需要明确定义域名? 或者是SSL握手失败等等,它的结果是这样的?
更新:
Nginxconfiguration文件:
abc.conf
def.conf
正如Johannes所说,我认为你对server_name含义有一个误解:完全没有。 大多数指南将其包含在默认的全部捕获服务器中,以确保它不会干扰任何指定的虚拟服务器。
在阅读内容时(或者写下你正在阅读的人错过了这些内容),你必须错过的是,正确的默认服务器实际上包含了default_server选项作为listen指令的一部分。 阅读nginx.org/r/listen了解更多信息。
这可能取决于您的服务器定义的顺序。 _没有特殊的名称,它只是一个无效的域名,因此永远不会匹配。 这与主机(如static.def.com的其他服务器定义中的服务器名称相同:两者不匹配。 如果没有匹配的话,nginx会简单地取第一个服务器定义。