Solo una nota de que esto no funciona para una configuración de Magento. Todavía estoy investigando las razones, pero creo que tiene algo que ver con la cadena de consulta.
Jauder Ho
location / wordpress debe ser útil cuando tienes wordpress en el subdirectorio llamado "wordpress". ¿Qué pasa cuando tenemos WordPress en la raíz web "/"?
rahul286
Respuestas:
21
Cómo combinar bloques HTTP y HTTPS.
server {
listen 80;
listen 443 default ssl;
# other directives
}
Esto fue publicado como respuesta a una pregunta diferente. Vea aquí .
En general, usar "if" es una mala práctica (según el autor de nginx). si es posible, mejor usar try_file de las directivas error_page en lugar de "if (-f ...)"
Combinando tip con maintenence.html y tip con try_files obtenemos:
ubicación / {
archivos_probar /maintenance.html $ uri $ uri / @wordpress;
}
Cuando finaliza el mantenimiento, solo mv maintenance.html de $ root.
Esto no es ideal ya que /maintenance.html se servirá como una respuesta 200. Probablemente desee que los motores de búsqueda reconozcan que la página de mantenimiento no es su sitio web real. Probablemente desee devolver un 503 (Servicio temporalmente no disponible). La única forma en que puedo descubrir cómo hacer esto es con un if (-f ...) { return 503; }y error_page 503 /maintenance.html. ¿Qué piensas?
Aaron Gibralter
11
Configure nginx para usar cifrados SSL más fuertes. De forma predeterminada, SSLv2 está habilitado (que debe deshabilitar si es posible).
¿Puedes proporcionar un ejemplo del mundo real para esto? Todavía no entiendo completamente cómo es útil.
The Pixel Developer
1
@ The Pixel Developer, solo es realmente útil para la velocidad. Nginx guarda los datos de un gif vacío en la memoria para que nunca tenga que cargarse desde el disco.
Desconocido
55
también access_log off;para esos lugares es una práctica común
SaveTheRbtz el
6
Configuramos Nginx con Chef, usando este libro de cocina que contiene scripts para manejar la configuración de nginx de forma similar a como Debian hace Apache2, y también algunas plantillas de muestra con valores predeterminados sanos.
Aquí hay un buen método para devolver una página de mantenimiento. Todas las solicitudes se reescriben y se devuelve el código http correcto. (503 Servicio no Disponible)
En realidad, no estoy de acuerdo: agregué un comentario a serverfault.com/questions/18994/nginx-best-practices/… . Básicamente, desea devolver un error 503 o, de lo contrario, los robots e indexadores pensarán que su página de mantenimiento es parte de su sitio real ... No hay nada malo con una ifdeclaración si la usa correctamente; los documentos dicen que ifson seguros si usted solo lo estás haciendo return xxx;.
¿Su ejemplo funciona solo para solicitudes con un vhost indefinido o también funcionará con solicitudes con un vhost desconocido (incorrecto)?
Benoit
@Benoit funciona para cualquier cosa que no esté definida.
Desconocido
¿"Server_name _ *" no es compatible con nginx 0.7 en adelante?
rahul286
1
Tenga en cuenta que esto es solo parcialmente cierto. "" detectará un encabezado de Host PERDIDO, pero no capturará una solicitud con un encabezado de Host que no coincida con nada. Si desea un bloque de servidor general, vea el indicador default_server debajo de la directiva listen.
Martin Fjordvald
3
También publiqué hace un tiempo acerca de cómo manejar adecuadamente la compresión gzip con nginx ya que los navegadores más antiguos pueden tener problemas con solo una declaración general de gzip. HTH.
Lo pondría en la categoría de "práctica fea pero ocasionalmente necesaria", ciertamente no es algo para alentar.
womble
2
Si necesita alternar contextualmente entre http y https para subdominios manejados por el mismo bloque de servidor, puede usar variables para hacerlo. Puede que no sea la forma más eficiente de hacer las cosas, pero funciona:
server {
server mysite.tld ~^.+\.mysite\.tld$;
set $req_ssl = 0;
map $host $files {
default common;
mysite.tld common;
www.mysite.tld common;
admin.mysite.tld admin;
system.mysite.tld system;
*.mysite.tld users;
}
root /var/www/mysite/$files;
if ( $files = "admin" ){
set $req_ssl 1;
}
if ( $files = "common" ){
set $req_ssl 2;
}
if ( $scheme = http )
{
set $req_ssl $req_ssl.1;
}
if ( $scheme = https )
{
set $req_ssl $req_ssl.2;
}
if ($req_ssl = 1.1){
rewrite ^ https://$host$uri;
}
if ($req_ssl = 2.2){
rewrite ^ http://$host$uri;
}
}
Siempre trato de usar la rootdirectiva en la parte superior del bloque del servidor para poder aprovechar la $document_rootvariable y nunca, pero nunca, incluir la rootdirectiva dentro de un bloque de ubicación.
La página Pitfalls de la wiki de Nginx tiene algunos consejos excelentes sobre las mejores prácticas.
Si está usando nginx como proxy, tener la configuración de tiempo de espera ajustada puede ser importante para asegurarse de que no tenga conexiones nginx drop antes de que su aplicación termine con ellas, especialmente si se trata de una aplicación de alto tráfico:
Respuestas:
Cómo combinar bloques HTTP y HTTPS.
Esto fue publicado como respuesta a una pregunta diferente. Vea aquí .
fuente
De lejos, los mejores consejos que he visto son del autor en su página de trampa: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
fuente
En general, usar "if" es una mala práctica (según el autor de nginx). si es posible, mejor usar try_file de las directivas error_page en lugar de "if (-f ...)"
Combinando tip con maintenence.html y tip con try_files obtenemos:
Cuando finaliza el mantenimiento, solo mv maintenance.html de $ root.
fuente
if (-f ...) { return 503; }
yerror_page 503 /maintenance.html
. ¿Qué piensas?Configure nginx para usar cifrados SSL más fuertes. De forma predeterminada, SSLv2 está habilitado (que debe deshabilitar si es posible).
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
fuente
A menudo es más eficiente usar la
map
directiva en lugar de expresiones regulares al cambiar la raíz por subdominios coincidentes:fuente
El
empty_gif
módulo también es muy útil, especialmente si necesita monitorear las respuestas del servidor web (usando nagios / monit / etc):fuente
access_log off;
para esos lugares es una práctica comúnConfiguramos Nginx con Chef, usando este libro de cocina que contiene scripts para manejar la configuración de nginx de forma similar a como Debian hace Apache2, y también algunas plantillas de muestra con valores predeterminados sanos.
fuente
Aquí hay un buen método para devolver una página de mantenimiento. Todas las solicitudes se reescriben y se devuelve el código http correcto. (503 Servicio no Disponible)
fuente
if
declaración si la usa correctamente; los documentos dicen queif
son seguros si usted solo lo estás haciendoreturn xxx;
.location = /maintenance.html { break; }
necesario?Desde nginx 0.7.12 y posteriores, se puede usar un "" en server_name para capturar solicitudes sin un encabezado "Host".
Puede usar lo siguiente como un catchall para hosts virtuales indefinidos.
fuente
También publiqué hace un tiempo acerca de cómo manejar adecuadamente la compresión gzip con nginx ya que los navegadores más antiguos pueden tener problemas con solo una declaración general de gzip. HTH.
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
fuente
No sé si es una mejor práctica, pero definitivamente es un buen truco para obtener condiciones anidadas en nginx. Aquí hay una muestra de la wiki de nginx .
fuente
Si necesita alternar contextualmente entre http y https para subdominios manejados por el mismo bloque de servidor, puede usar variables para hacerlo. Puede que no sea la forma más eficiente de hacer las cosas, pero funciona:
fuente
Siempre trato de usar la
root
directiva en la parte superior del bloque del servidor para poder aprovechar la$document_root
variable y nunca, pero nunca, incluir laroot
directiva dentro de un bloque de ubicación.La página Pitfalls de la wiki de Nginx tiene algunos consejos excelentes sobre las mejores prácticas.
fuente
Si está usando nginx como proxy, tener la configuración de tiempo de espera ajustada puede ser importante para asegurarse de que no tenga conexiones nginx drop antes de que su aplicación termine con ellas, especialmente si se trata de una aplicación de alto tráfico:
fuente
¿Echaste un vistazo por aquí?
http://www.directadmin.com/forum/showthread.php?p=137288
fuente