sitios - nginx no funciona
configuraciĆ³n del subdominio nginx (1)
Tengo nginx actuando como un proxy inverso para apache. Ahora necesito agregar un nuevo subdominio que sirva archivos de otro directorio, pero al mismo tiempo quiero que todas las directivas de ubicación y proxy_pass que tengo para el host predeterminado también se apliquen al subdominio.
Sé que si copio las reglas del host predeterminado al nuevo subdominio funcionará, pero ¿hay alguna manera para que el subdominio herede las reglas? A continuación se muestra una configuración de muestra
server {
listen 80;
server_name www.somesite.com;
access_log logs/access.log;
error_log logs/error.log error;
location /mvc {
proxy_pass http://localhost:8080/mvc;
}
location /assets {
alias /var/www/html/assets;
expires max;
}
... a lot more locations
}
server {
listen 80;
server_name subdomain.somesite.com;
location / {
root /var/www/some_dir;
index index.html index.htm;
}
}
Gracias
Puede mover las partes comunes a otro archivo de configuración e include
desde ambos contextos del servidor. Esto debería funcionar:
server {
listen 80;
server_name server1.example;
...
include /etc/nginx/include.d/your-common-stuff.conf;
}
server {
listen 80;
server_name another-one.example;
...
include /etc/nginx/include.d/your-common-stuff.conf;
}
Editar: Aquí hay un ejemplo que en realidad está copiado de mi servidor en ejecución. Configuro la configuración básica de mi servidor en /etc/nginx/sites-enabled
(cosas normales para nginx en Ubuntu / Debian). Por ejemplo, el archivo de configuración de mi servidor principal de bunkus.org
es /etc/nginx/sites-enabled
y se ve así:
server {
listen 80 default_server;
listen [2a01:4f8:120:3105::101:1]:80 default_server;
include /etc/nginx/include.d/all-common;
include /etc/nginx/include.d/bunkus.org-common;
include /etc/nginx/include.d/bunkus.org-80;
}
server {
listen 443 default_server;
listen [2a01:4f8:120:3105::101:1]:443 default_server;
include /etc/nginx/include.d/all-common;
include /etc/nginx/include.d/ssl-common;
include /etc/nginx/include.d/bunkus.org-common;
include /etc/nginx/include.d/bunkus.org-443;
}
Como ejemplo, aquí está el archivo /etc/nginx/include.d/all-common
que se incluye desde ambos contextos del server
:
index index.html index.htm index.php .dirindex.php;
try_files $uri $uri/ =404;
location ~ //.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~ /(README|ChangeLog)$ {
types { }
default_type text/plain;
}