2011-09-14 14 views
5

Ejecuto nginx para contenido estático y como proxy para Apache/mod_wsgi que sirve django. Tengo example.com y test.example.com como proxy para Apache/Django y static.example.com que sirve todos los archivos estáticos directamente a través de nginx. Tengo un certificado SSL comodín para que cada uno de estos subdominios pueda usar SSL (y solo tengo una IP).¿Por qué se escucha el trabajo `443 default_server ssl` para múltiples nombres de servidor en nginx?

¿Por qué es que cuando se utiliza en listen 443 default_server ssl;ya sea test.example.com o example.com, SSL funciona tanto todavía tengo que escuchar de forma explícita a 443 para static.example.com?

ssl_certificate   /etc/ssl/certs/example.chained.crt; 
ssl_certificate_key  /etc/ssl/private/example.key; 

server { 
    listen  80; 
    listen  443; 
    server_name static.example.com; 
    # ... serves content ... 
} 

server { 
    listen  80; 
    listen  443 default_server ssl; 
    server_name example.com; 
    # ... proxy pass to http://example.com:8080 (apache) ... 
} 
server { 
    listen  80; 
    # why don't I need `listen 443;` here? 
    server_name test.example.com; 
    # ... proxy pass to http://test.example.com:8080 (apache) ... 
} 

Respuesta

3

El protocolo SSL por sí mismo (sin la extensión SNI) utiliza la dirección IP del servidor para solicitar el certificado SSL. Con SNI también pasa el nombre de host (no funciona para Win XP), pero eso no debería ser relevante aquí.

Las directivas de servidor no son una coincidencia exacta. Es el partido "más cercano". Puede parecer "trabajo", pero puede terminar en una directiva de servidor incorrecta. Es difícil de decir sin más información, como la raíz del servidor.

El punto es que algo siempre funcionará ya que parece que está usando una sola dirección IP.

+0

Estoy de acuerdo con Luke, parece que funcionaría, pero no confiaría en esa configuración. Probablemente deberías agregar explícitamente escuchar 443 –

Cuestiones relacionadas