worker_connections varios reiniciar keepalive_timeout funciona español dominios como nginx meteor

varios - configuración nginx recomendada para meteoro



reiniciar nginx (2)

La configuración del sitio para mi aplicación de meteorito tiene directivas que se parecen a las siguientes:

server { listen 443; server_name XXX; ssl on; ssl_certificate XXX; ssl_certificate_key XXX; location / { proxy_pass http://localhost:3000; proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule proxy_http_version 1.1; # recommended for keep-alive connections per http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } }

Siento que debería decirle a nginx que sirva contenido de static_cacheable y establezca el encabezado expires a max . ¿Cómo hago eso exactamente? ¿Hay otras cosas que debería agregar aquí?


Aunque no soy un experto en nginx, siento que entiendo mucho mejor cómo hacerlo ahora. A medida que descubra más, actualizaré esta respuesta.

Una posible solución a mi pregunta original es esta:

location ~* "^/[a-z0-9]{40}/.(css|js)$" { root /home/ubuntu/app/bundle/programs/web.browser; access_log off; expires max; }

Que dice: Cualquier URL para este sitio que contiene una barra seguida de 40 caracteres alfanuméricos + .js o .css, se puede encontrar en el directorio web.browser . Sirva estos archivos estáticamente, no los escriba en el registro de acceso y dígale al cliente que se pueden almacenar en caché para siempre.

Debido a que los principales archivos css y js tienen un nombre único después de cada operación del paquete, esto debería ser seguro.

Mantendré una versión completa de este ejemplo here . También vale la pena señalar que estoy usando una compilación reciente de nginx que admite WebSockets como se explica here .

Finalmente, no olvide habilitar completamente gzip en su configuración de nginx. Mi sección gzip se ve así:

gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Después de hacer todo eso, pude obtener un puntaje decente en pagespeed de pagespeed .

actualización 17/09/2014:

Actualizado las rutas para el meteorito 0.9.2.1


Hice algunas actualizaciones y mejoras a la otra respuesta. Específicamente,

  • el encabezado X-Forwarded-For debe establecerse para la nueva detección de dirección IP de Meteor que se realiza en este archivo . No parece que se use X-Real-IP .
  • la ruta /nginx_status se puede usar para controlar la cantidad de tráfico que llega a través del proxy.

He jugueteado con esto un poco y se me ocurrió la siguiente configuración. Edita tus campos apropiadamente.

En primer lugar, la compresión, que acelera considerablemente el tiempo de carga. Tenga en cuenta que la directiva gzip_buffers generalmente se calcula automáticamente de forma predeterminada utilizando el tamaño de página de la memoria del sistema:

gzip on; gzip_disable "msie6"; gzip_min_length 1100; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

La configuración del servidor en sí:

server { listen 443 ssl; server_name my.domain.com; ssl on; ssl_certificate /etc/ssl/nginx/certificate.crt; ssl_certificate_key /etc/ssl/nginx/certificate.key; access_log /var/log/nginx/localhost.ssl_access_log main; error_log /var/log/nginx/localhost.ssl_error_log info; # Forward to meteor server location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/ location /nginx_status { stub_status on; access_log off; allow 192.168.0.0/24; deny all; } }

Finalmente, como mencionó Dan, necesitará establecer la variable de entorno HTTP_FORWARDED_COUNT en Meteor para recoger apropiadamente las direcciones IP del cliente detrás del proxy inverso.