我的 nginx 有一点问题。我们拥有两个子域,我们称它们为domain1.com 和domain2.com。对于domain2,我们没有更多的子域,对于domain1,我们有几个。如果有人输入www.domain2.com我希望 nginx 将其转发到https://domain2.com
,否则只需将其转发到 https:// 。我通过 site-available 中的domain2配置末尾的这两个块来实现这一点:
server {
listen 80;
server_name domain2.com;
return 301 https://$http_host$request_uri;
}
server {
listen 80;
server_name www.domain2.com;
return 301 https://domain2.com$request_uri;
}
我还为所有子域启用了 HSTSadd_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
现在,当导航到www.domain2.com时,浏览器会抛出错误,因为 nginx 向它们提供了 a_subdomain.domain1.com 的证书。直接访问domain2.com时不会发生这种情况,然后nginx会提供正确的证书。不,遗憾的是,反向代理domain1的子域是不可能的,nginx在与PHP结合时似乎遇到了麻烦。
我该如何让 nginx 正确执行此操作?
有趣的是,我还有一个配置转发,从我们用来托管的域(与domain1和domain2不同)到其他服务器上的新域,这些转发没有这个问题,但新页面可能不使用HSTS ,所以这可能就是原因。