Назад | Перейти на главную страницу

nginx с несколькими серверами и сертификатом ssl, всегда используйте один и тот же ssl

У меня выносливый ubuntu с версией nginx: nginx / 0.5.33

У меня несколько серверов, и они отлично работают с портом 80.

Теперь некоторые из них я хочу обслуживать с использованием SSL на порту 443, и у каждого из них есть собственный сертификат ssl.

Проблема в том, что каждый домен использует один и тот же сертификат ssl, и в браузере появляется ошибка, указывающая на несоответствие имени сертификата ssl.

Я уверен, что все сертификаты действительны и верны, пути верны. Если я обслуживаю только ОДИН домен, сертификат ssl в порядке, значит, все файлы в порядке.

Почему nginx всегда использует один и тот же ssl-сертификат для всех конфигураций сервера?

Вот два примера: если оба активны, для домена 1 всегда используется ssl, если я удалю домен 1, домен 2 с ssl работает нормально с правильным файлом ssl.

Спасибо,

м.


файл nginx.conf:

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
worker_connections  1024;
}

http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

access_log  /var/log/nginx/access.log;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay        on;

gzip  on;

include /etc/nginx/conf.d/*.conf;
}

файл domain1.conf:

server {

        listen 443;

        server_name domain1.montx.com;
        root /etc/nginx/sites-available/domain1;
        access_log /etc/nginx/sites-available/domain1/log/nginx.log;
        error_page 500 502 503 504 /500.html;
        client_max_body_size 50M;

        ssl on;
        ssl_certificate /etc/nginx/conf.d/domain1.crt;
        ssl_certificate_key /etc/nginx/conf.d/domain1.key;

         location / {

                auth_basic "Restricted";
                auth_basic_user_file  domain1_htpasswd;
                 }
}

файл domain2.conf:

upstream thin_domain2 {
    server   unix:/tmp/thin_domain2.0.sock;
    server   unix:/tmp/thin_domain2.1.sock;
    server   unix:/tmp/thin_domain2.2.sock;
}


server {

    listen 443;
    ssl on;
    ssl_certificate /etc/nginx/conf.d/domain2.crt;
    ssl_certificate_key /etc/nginx/conf.d/domain2.key;




    server_name domain2.montx.com;
    root /u/apps/domain2/current/public;
    access_log /u/apps/domain2/shared/log/nginx.log;
    error_page 500 502 503 504 /500.html;
    client_max_body_size 50M;

    # First rewrite rule for handling maintenance page
    if (-f $document_root/system/maintenance.html) {
            rewrite ^(.*)$ /system/maintenance.html last;
            break;
    }

    location / {
            index index.html index.htm;

            # Forward information about the client and host
            # Otherwise our Rails app wouldn't have access to it
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_max_temp_file_size 0;
            # Directly serve static content
            location ~ ^/(images|javascripts|stylesheets)/ {
                    expires 10y;
            }
            if (-f $request_filename) {
                    break;
            }

            # Directly serve cached pages
            if (-f $request_filename.html) {
                    rewrite (.*) $1.html break;
            }

            # Otherwise let Thin handle the request
            if (!-f $request_filename) {
                    proxy_pass http://thin_domain2;
                    break;
            }
    }
}

Вам необходимо назначить индивидуальный IP-адрес для каждого сертификата SSL, который вы хотите использовать.

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts

http://www.ruby-forum.com/topic/186664#815383

Добавьте привязки IP-адресов для каждого блока вашего сервера:

listen yourIPaddress:443 ssl;