为什么nginx不响应域名?

为什么nginx不响应域名?

我有带有以下虚拟主机的 nginx:

gitlab 虚拟主机:

server {
    listen 443; 
    server_name gitlab.mydomain.com;     # e.g., server_name source.example.com;
    server_tokens off;     # don't show the version number, a security best practice
    root /home/git/gitlab/public;

    ssl on;
    ssl_certificate /etc/nginx/ssl/gitlab.crt;
    ssl_certificate_key /etc/nginx/ssl/gitlab.key;
    ...
# individual nginx logs for this gitlab vhost
    access_log  /var/log/nginx/gitlab_access.log;
    error_log   /var/log/nginx/gitlab_error.log;
    ...
}

默认虚拟主机用于捕获所有其他域名

server {
    listen      80;
    return      444;
}

server {
    listen      443;
    return      444;
}

但是现在如果访问 gitlab.mydomain.com,我只能得到

Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

没有别的。而且,如果没有默认规则,gitlab.mydomain.com在每个 上也是可访问的*.mydomain.com。这是不可接受的。

如何配置 nginx 以使其仅响应配置的名称?

答案1

您的默认端口 443 服务器不知道任何证书,因此您会收到此错误,因为它无法在没有证书的情况下执行 SSL。更好的方法是在 http 部分(或每个需要 SSL 的服务器部分)中定义 ssl* 行,然后在每个服务器部分中启用端口 443 和 ssl,并使用您要查找的相同路由。

相关内容