apache - sitios - nginx virtual host
Apache y la última configuración para nginx para servir a todos los hosts virtuales de la manera correcta (2)
Lo que hace ahora es enviar todo el tráfico de red a 127.0.0.1:8080 sin permitir que Nginx sirva los archivos estáticos.
Lo que debes probar es lo siguiente:
server {
listen 80;
server_name sky2high.net www.sky2high.net;
location / {
proxy_pass http://127.0.0.1:8080;
include /etc/nginx/conf.d/proxy.conf;
}
location ~* ^.+/.(jpg|jpeg|gif|png|ico|tgz|gz|pdf|rar|bz2|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf) {
root /folder/to/static/files;
expires 90d;
}
location ~* ^.+/.(css|js)$ {
root /folder/to/static/files;
expires 30d;
}
Y en proxy.conf pones lo siguiente:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 8m;
client_body_buffer_size 256k;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 32 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 256k;
Esto debería funcionar para ti
Acabo de configurar nginx para atender solicitudes estáticas en un sitio, pero tengo muchos sitios en mi servidor y me pregunto si debería corregir la configuración del nuevo servidor nginx para todos ellos. Lo que estoy haciendo ahora Tengo un archivo con todas las entradas de hosts virtuales para Apache con algo así:
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName sky2high.net
DocumentRoot /home/mainsiter/data/www/sky2high.net
</VirtualHost>
<VirtualHost *:8080>
ServerName surdo.asmon.ru
DocumentRoot /home/surdo/data/www/surdo.asmon.ru
</VirtualHost>
<VirtualHost *:8080>
ServerName surdoserver.ru
DocumentRoot /home/surdo/data/www/surdoserver.ru
</VirtualHost>
Tengo esto en ports.conf de apache:
Listen 8080
Así que configuré nginx para trabajar con un sitio (sky2high.net), creé el siguiente archivo de configuración (/etc/nginx/sites-enabled/sky2high.net):
server {
listen 80;
server_name sky2high.net www.sky2high.net;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
access_log /var/log/nginx.access_log;
location ~* /.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /home/mainsiter/data/www/sky2high.net/;
index index.php;
access_log off;
expires 30d;
}
location ~ //.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Y funciona bien para este dominio, pero, por supuesto, otros hosts virtuales están rotos.
Entonces, la pregunta es: ¿existe la última opción de configuración para nginx, que puede ayudar a manejar todas las solicitudes, desde todos los hosts virtuales (dominios) y servirlos de la manera correcta? Es decir, una opción que permite no escribir archivos de configuración separados para cada host virtual (con todo esto duplicado como opciones de raíz e índice), ¿pero solo uno para todos los hosts virtuales?
PD: ¿Debo mover la pregunta a serverfault?
ACTUALIZACIÓN: Emm .. Me pregunto cómo funciona, pero lo es. He hecho los siguientes archivos de configuración:
/etc/nginx/nginx.conf
user www-data;
worker_processes 2;
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;
gzip_min_length 1000;
gzip_proxied any;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
y
/ etc / nginx / sites-enabled / default
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
No entiendo cómo funciona, pero es ...
ACTUALIZACIÓN 2: ¡o no funciona! Busqué "arriba" en la consola y mencioné que apache no solo sirve para php, sino también para contenido estático = (
Solo mis dos centavos, en la mayoría de los casos no es necesario especificar la listen 80
.
Fuente: Errores comunes de Nginx