示例案例。我有一个带有一个 IPV4 地址的网络服务器。我托管了大约 50 个网站,其中只有两个拥有 ssl 证书。我已经为 2 个 ssl 网站配置了虚拟主机,一切正常,除了一个大问题 - 如果我使用 https:// 前缀访问其他 48 个站点(它们没有 ssl 证书),我看到我的最新网站带有 SSL 证书.
可以在非 SSL 网站上阻止 https 前缀吗?或者只有一种解决方案 - 使用专用 IP 地址。如果我有专用的 IP 地址,我将使用以下配置:
server {
listen 111.222.333.444:443 ssl;
}
Run Code Online (Sandbox Code Playgroud)
这样,如果我在非 SSL 网站上强制使用 https - 没有任何反应。
Nginx 使用一个“默认服务器”,当没有另一个最接近的匹配时,它会选择它来提供页面。如果您没有指定要使用的默认服务器,我相信它会使用它找到的第一个服务器(在您的情况下是您的 HTTPS 站点之一)。因此,您应该能够使用 TLS 的 IPv4 地址创建默认服务器虚拟主机(您现在只使用 TLS 而不是 SSL,对吗?)并让它侦听将捕获随机 HTTPS 请求的 IP。您可能还需要为 48 个非安全站点在其中添加 server_name 项,但如果没有它,它也可以工作。
#Your catch-all HTTPS server:
server {
listen 104.218.234.204:443 default_server;
server_name ruel.in ruel.pro;
root /var/www/ruel.pro;
index index.html;
ssl on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_dhparam /etc/ssl/private/dhparams_4096.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
#Regular HTTP server
server {
listen ruel.in:80;
server_name ruel.in;
root /var/www/ruel.in;
index index.php index.html index.htm;
...
}
#Regular HTTP server
server {
listen ruel.pro:80;
server_name ruel.pro;
root /var/www/ruel.pro;
index index.php index.html index.htm;
...
}
#Your HTTPS server
server {
listen dallas.ruhnet.net:443 ssl;
server_name dallas.ruhnet.net;
...
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是继续使用 HTTPS 设置它们!通过 Let's Encrypt 项目 ( https://www.letsencrypt.org ),您可以免费获得所有其他站点的可信证书。这很容易。
归档时间: |
|
查看次数: |
16794 次 |
最近记录: |