Nginx一个ip和多个ssl证书

前端之家收集整理的这篇文章主要介绍了Nginx一个ip和多个ssl证书前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

示例案例.我有一个带有一个IPV4地址的网络服务器.我正在托管~50个网站,其中只有两个有ssl证书.我为2个ssl网站配置了vhosts,一切正常,除了一个大问题 – 如果我使用https://前缀访问其他48个站点(他们没有ssl证书),我看到我的最新网站有SSL证书.

可以在非SSL网站上阻止https前缀吗?或者只有一个解决方案 – 使用专用的IP地址.如果我有专用的IP地址,我使用以下配置:

server {
        listen 111.222.333.444:443 ssl;
}

这样,如果我在非SSL网站上强制https – 没有任何反应.

最佳答案
当没有其他最接近的匹配时,Nginx使用它选择的“默认服务器”来提供页面.如果您尚未指定要使用的默认服务器,我相信它会使用它找到的第一个(在您的情况下是您的一个HTTPS站点).所以你应该能够用你的TLS的IPv4地址创建一个默认服务器vhost(你只使用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;
  ...
}

另一种方法是继续使用HTTPS设置它们!通过Let’s Encrypt项目(https://www.letsencrypt.org),您可以免费获得所有其他站点的可信证书.这很容易.

猜你在找的Nginx相关文章