¿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
include
enserver {}
bloques separados de la siguiente manera:fuente
server_name
es diferente para cada puertolisten 443 ssl;
partir de ahora uno.listen
lí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