¿Hay alguna manera de compartir directivas de configuración en dos server {}bloques nginx ? Me gustaría evitar duplicar las reglas, ya que el contenido HTTPS y HTTP de mi sitio se sirve con la misma configuración exacta.
Actualmente, es así:
server {
listen 80;
...
}
server {
listen 443;
ssl on; # etc.
...
}
¿Puedo hacer algo en la línea de:
server {
listen 80, 443;
...
if(port == 443) {
ssl on; #etc
}
}

Para aclarar la respuesta aceptada, debe omitir
y solo necesitas lo siguiente para la versión nginx después de 0.8.21
Referencia:
Nginx Docs: configuración de un único servidor HTTP / HTTPS
fuente
No conozco una forma como usted sugiere, pero ciertamente hay una manera fácil y fácil de mantener.
Mueva la configuración común del servidor a un archivo separado, es decir, "serverFoo.conf" y luego
includeenserver {}bloques separados de la siguiente manera:fuente
server_namees diferente para cada puertolisten 443 ssl;partir de ahora uno.listenlíneas no se interpretan correctamente, pero moverlas para separarlo loserver{}arregla.Ampliando las respuestas ya útiles, aquí hay un ejemplo más completo:
fuente
Solo para agregar a la publicación de Igor / Jauder, si está escuchando una IP específica, puede usar:
fuente