Juste une note que cela ne fonctionne pas pour une configuration Magento. J'enquête toujours sur les raisons, mais je pense que cela a quelque chose à voir avec la chaîne de requête.
Jauder Ho
location / wordpress doit être utile lorsque vous avez wordpress dans le sous-répertoire nommé "wordpress". Qu'en est-il lorsque nous avons WordPress dans la racine Web "/"?
rahul286
Réponses:
21
Comment combiner des blocs HTTP et HTTPS.
server {
listen 80;
listen 443 default ssl;
# other directives
}
Cela a été posté comme une réponse à une question différente. Voir ici .
Généralement, utiliser "si" est une mauvaise pratique (selon l'auteur de nginx). si possible, utilisez plutôt try_file des directives error_page à la place "if (-f ...)"
En combinant tip avec le fichier maintenence.html et tip avec try_files, nous obtenons:
emplacement / {
try_files /maintenance.html $ uri $ uri / @wordpress;
}
Lorsque la maintenance est terminée, il suffit de mv maintenance.html à partir de $ root.
Ce n'est pas idéal car /maintenance.html sera servi comme réponse 200. Vous voulez probablement que les moteurs de recherche reconnaissent que la page de maintenance n'est pas votre site Web actuel. Vous voudrez probablement renvoyer un 503 (service temporairement indisponible). Le seul moyen de comprendre comment faire est d'utiliser un if (-f ...) { return 503; }et error_page 503 /maintenance.html. Qu'est-ce que tu penses?
Aaron Gibralter
11
Configurez nginx pour utiliser des chiffrements SSL plus puissants. Par défaut, SSLv2 est activé (vous devez le désactiver si possible).
Il est souvent plus efficace d’utiliser la mapdirective à la place des expressions régulières lors du changement de racine pour faire correspondre les sous-domaines:
Pouvez-vous donner un exemple concret pour cela? Je ne comprends toujours pas à quel point c'est utile.
Le développeur de
1
@ The Pixel Developer, ce n’est vraiment utile que pour la vitesse. Nginx conserve les données d'un gif vide en mémoire afin qu'il ne soit jamais chargé à partir du disque.
Inconnu
5
aussi access_log off;pour ces lieux est une pratique courante
SaveTheRbtz
6
Nous avons configuré Nginx avec Chef à l’aide de ce livre de recettes, qui contient des scripts de gestion de la configuration de Nginx similaires à ceux utilisés par Apol2 par Debian, ainsi que des exemples de modèles avec des valeurs par défaut sane.
Voici une bonne méthode pour retourner une page de maintenance. Toutes les demandes sont réécrites et le code http correct est renvoyé. (503 Service Indisponible)
En fait, je ne suis pas d'accord - j'ai ajouté un commentaire à serverfault.com/questions/18994/nginx-best-practices/… . En gros, vous voulez retourner une erreur 503 ou bots d' autre et indexeurs pensera votre page d'entretien fait partie de votre site actuel ... Il est faux de rien avec une ifdéclaration si vous l' utilisez correctement - les docs disent que ifs sont en sécurité si vous faites juste return xxx;.
Aaron Gibralter
Aussi, est location = /maintenance.html { break; }nécessaire?
Aaron Gibralter
4
À partir de nginx 0.7.12 et ultérieur, un "" est utilisable dans nom_serveur pour intercepter les demandes sans en-tête "Host".
Vous pouvez utiliser ce qui suit comme fourre-tout pour des hôtes virtuels non définis.
Votre exemple fonctionne-t-il uniquement pour les demandes avec un vhost non défini ou travaillera-t-il également avec des demandes avec un vhost inconnu (mauvais)?
Benoit
@Benoit cela fonctionne pour tout ce qui n'est pas défini.
Inconnu
Est-ce que "nom_serveur _ *" n'est pas pris en charge à partir de nginx 0.7?
rahul286
1
S'il vous plaît noter que ce n'est que partiellement vrai. "" attrapera un en-tête MISSING Host, mais ne capturera pas une requête avec un en-tête Host qui ne correspond à rien. Si vous voulez un bloc serveur fourre-tout, voyez l'indicateur default_server sous la directive listen.
Martin Fjordvald
3
J'ai également posté il y a quelque temps sur la façon de gérer correctement la compression gzip avec nginx, car les anciens navigateurs pourraient avoir des problèmes avec une simple déclaration gzip globale. HTH.
Je ne sais pas si c'est une pratique recommandée, mais c'est vraiment un bidouillage génial pour obtenir des conditions imbriquées dans nginx. Voici un exemple du wiki nginx .
location /xxxx/ {
set $test "";
if ($request_method = POST) {
set $test P;
}
if ($http_cookie ~* "CCCC=.+(?:;|$)" ) {
set $test "${test}C";
}
if ($test = PC) {
#rewrite rule goes here.
}
}
Je mettrais cela dans la catégorie des "pratiques laides, mais parfois nécessaires" - certainement pas quelque chose à encourager.
femme
2
Si vous devez basculer de manière contextuelle entre http et https pour les sous-domaines gérés par le même bloc de serveur, vous pouvez utiliser des variables pour le faire. Ce n'est peut-être pas la manière la plus efficace de faire les choses, mais ça marche:
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;
}
}
J'essaie toujours d'utiliser la rootdirective dans la partie supérieure du bloc serveur pour pouvoir tirer parti de la $document_rootvariable et ne jamais, mais jamais, inclure la rootdirective dans un bloc d'emplacement.
La page des pièges du wiki Nginx propose des conseils judicieux sur les meilleures pratiques.
Si vous utilisez nginx en tant que proxy, il peut être important de régler les paramètres de délai d'attente pour éviter toute interruption de la connexion nginx avant que votre application ne soit terminée, en particulier si vous utilisez une application à trafic élevé:
Réponses:
Comment combiner des blocs HTTP et HTTPS.
Cela a été posté comme une réponse à une question différente. Voir ici .
la source
De loin, les meilleurs conseils que j'ai jamais vus sont ceux de l'auteur sur sa page de piège: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
la source
Généralement, utiliser "si" est une mauvaise pratique (selon l'auteur de nginx). si possible, utilisez plutôt try_file des directives error_page à la place "if (-f ...)"
En combinant tip avec le fichier maintenence.html et tip avec try_files, nous obtenons:
Lorsque la maintenance est terminée, il suffit de mv maintenance.html à partir de $ root.
la source
if (-f ...) { return 503; }
eterror_page 503 /maintenance.html
. Qu'est-ce que tu penses?Configurez nginx pour utiliser des chiffrements SSL plus puissants. Par défaut, SSLv2 est activé (vous devez le désactiver si possible).
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
la source
Il est souvent plus efficace d’utiliser la
map
directive à la place des expressions régulières lors du changement de racine pour faire correspondre les sous-domaines:la source
Le
empty_gif
module est également très utile, en particulier si vous avez besoin de surveiller le serveur Web (en utilisant nagios / monit / etc):la source
access_log off;
pour ces lieux est une pratique couranteNous avons configuré Nginx avec Chef à l’aide de ce livre de recettes, qui contient des scripts de gestion de la configuration de Nginx similaires à ceux utilisés par Apol2 par Debian, ainsi que des exemples de modèles avec des valeurs par défaut sane.
la source
Voici une bonne méthode pour retourner une page de maintenance. Toutes les demandes sont réécrites et le code http correct est renvoyé. (503 Service Indisponible)
la source
if
déclaration si vous l' utilisez correctement - les docs disent queif
s sont en sécurité si vous faites justereturn xxx;
.location = /maintenance.html { break; }
nécessaire?À partir de nginx 0.7.12 et ultérieur, un "" est utilisable dans nom_serveur pour intercepter les demandes sans en-tête "Host".
Vous pouvez utiliser ce qui suit comme fourre-tout pour des hôtes virtuels non définis.
la source
J'ai également posté il y a quelque temps sur la façon de gérer correctement la compression gzip avec nginx, car les anciens navigateurs pourraient avoir des problèmes avec une simple déclaration gzip globale. HTH.
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
la source
Je ne sais pas si c'est une pratique recommandée, mais c'est vraiment un bidouillage génial pour obtenir des conditions imbriquées dans nginx. Voici un exemple du wiki nginx .
la source
Si vous devez basculer de manière contextuelle entre http et https pour les sous-domaines gérés par le même bloc de serveur, vous pouvez utiliser des variables pour le faire. Ce n'est peut-être pas la manière la plus efficace de faire les choses, mais ça marche:
la source
J'essaie toujours d'utiliser la
root
directive dans la partie supérieure du bloc serveur pour pouvoir tirer parti de la$document_root
variable et ne jamais, mais jamais, inclure laroot
directive dans un bloc d'emplacement.La page des pièges du wiki Nginx propose des conseils judicieux sur les meilleures pratiques.
la source
Si vous utilisez nginx en tant que proxy, il peut être important de régler les paramètres de délai d'attente pour éviter toute interruption de la connexion nginx avant que votre application ne soit terminée, en particulier si vous utilisez une application à trafic élevé:
la source
Avez-vous jeter un oeil ici?
http://www.directadmin.com/forum/showthread.php?p=137288
la source