Add article 'Hugo: redirect permanent nginx / OpenBSD'

master
HUC Stéphane 2021-07-28 14:52:30 +02:00
parent 6b16ec0ba8
commit 5b7612dad4
Signed by: hucste
GPG Key ID: C4ED64222D9B037F
10 changed files with 195 additions and 12 deletions

View File

@ -1,11 +1,11 @@
---
categories:
categories: ['']
date: {{ .Date }}
description: ""
draft: false
include_toc: true
show_comments: false
tags: []
tags: ['']
title: "{{ replace .Name "-" " " | title }}"
translationKey: ''
---

View File

@ -533,11 +533,12 @@ title = "Stéphane HUC :: IT Log"
suffixes = ["xml"]
[mediaTypes."application/opensearchdescription+xml"]
suffixes = ["xml"]
[mediaTypes."conf/nginx"]
[mediaTypes."text/gemini"]
suffixes = ["gmi"]
[outputs]
home = ["HTML", "ATOM", "gemini", "JSON", "RSS", "OpenSearch"]
home = ["HTML", "ATOM", "gemini", "JSON", "nginx", "OpenSearch", "RSS"]
page = ["HTML", "gemini"]
section = ["HTML"]
taxonomy = ["HTML"]
@ -575,6 +576,13 @@ title = "Stéphane HUC :: IT Log"
Rel = "alternate"
suffix = "json"
[outputFormats.nginx]
baseName = "redirections.conf"
isPlainText = true
mediatype = "conf/nginx"
notAlternative = true
path = "nginx-config"
[outputFormats.OpenSearch]
baseName = "opensearch"
isHTML = false

View File

@ -1,12 +1,13 @@
---
title: "Munin-node : Client pour Monitorer OpenBSD"
aliases: [/fr/sys/openbsd/munin-node/]
date: 2019-11-22T20:05:30+01:00
description: "Mettre en place un nœud Munin, un client, pour monitorer sa station OpenBSD"
draft: false
include_toc: true
lastmod:
show_comments: false
tags: ["Munin", "OpenBSD", "client", "supervision"]
tags: ["Munin","OpenBSD","client","supervision"]
title: "Munin-node : Client pour monitorer OpenBSD"
---
## Description

View File

@ -1,12 +1,13 @@
---
title: "Munin : Monitorer OpenBSD avec httpd "
aliases: [/fr/sys/openbsd/munin-server/]
date: 2019-11-16T23:18:30+01:00
description: "Comment mettre en place Munin pour monitorer, faire de la métrologie, surveiller du matériel informatique, sous OpenBSD, fonctionnant en relation avec le service web httpd"
draft: false
include_toc: true
lastmod: 2019-11-22T20:00:00+01:00
show_comments: false
tags: ["httpd", "Munin", "OpenBSD", "serveur", "supervision"]
tags: ["httpd","Munin","OpenBSD","serveur","supervision"]
title: "Munin : Monitorer OpenBSD avec httpd "
---
## Description

View File

@ -1,12 +1,13 @@
---
title: "Nagios : Monitorer OpenBSD avec httpd + slowcgi"
aliases: [/fr/sys/openbsd/nagios]
date: 2019-11-14T10:56:30+01:00
description: "Comment mettre en place Nagios, sous OpenBSD, couplé avec les services web httpd et CGI slowcGI pour assurer le monitoring du matériel informatique. "
draft: false
include_toc: true
lastmod: 2019-11-17T06:05:06+01:00
show_comments: false
tags: ["httpd", "nagios", "OpenBSD", "slowcgi", "serveur", "supervision"]
tags: ["httpd","nagios","OpenBSD","slowcgi","serveur","supervision"]
title: "Nagios : Monitorer OpenBSD avec httpd + slowcgi"
---
## Description

View File

@ -1,12 +1,13 @@
---
title: "Snmpd : Monitorer OpenBSD"
aliases: [/fr/sys/openbsd/snmpd/]
date: 2019-11-20T22:43:39+01:00
description: "Comment mettre en place le service de monitoring SNMPd sous OpenBSD"
draft: false
include_toc: true
lastmod: 2019-11-21T16:00:00+01:00
show_comments: false
tags: ["OpenBSD", "snmpd", "snmp", "serveur"]
tags: ["OpenBSD","snmpd","snmp","serveur","supervision"]
title: "Snmpd : Monitorer OpenBSD"
---
## Description

View File

@ -2,7 +2,7 @@
date: 2021-07-28T00:13:24+02:00
description: "Installer et utiliser pfstat, pour analyser le flux réseau IPv4 et IPv6 au-travers du parefeu PF, sous OpenBSD !"
draft: false
tags: ['Monitor','Dataviz','pfstat','OpenBSD','httpd']
tags: ['supervision','Dataviz','pfstat','OpenBSD','httpd']
title: "pfstat sur OpenBSD : analyser le flux IPv4 et IPv6 dans PF"
translationKey: ""
---

View File

@ -1,4 +1,5 @@
---
aliases: [/fr/sys/openbsd/xfce/]
date: 2021-07-20T21:05:54+02:00
description: "Installer et utiliser l'environnement de bureau graphique Xfce4 sous OpenBSD !"
draft: false

View File

@ -0,0 +1,164 @@
---
categories: ['']
date: 2021-07-28T13:50:33+02:00
description: "Configurer Hugo et Nginx sous OpenBSD pour effectuer des redirections permanentes"
draft: false
include_toc: true
show_comments: false
tags: ['']
title: "Hugo : Redirection permanente pour Nginx sous OpenBSD"
translationKey: ''
---
## Description
Comment faire une redirection permanente, appelée aussi 301, pour Hugo,
avec le serveur web nginx… sous OpenBSD ?!
L'article de [Romain Therrat](https://romain.therrat.fr/posts/2020/04/hugo-redirections-301/)
donne les grandes lignes… sauf que sous OpenBSD, ça ne fonctionne pas !
Je reprends les grands principes ci-dessous, adapté à OpenBSD :
## Configuration
### Hugo
Le principe est l'utilisation des alias d'URL.
En partant du principe de l'utilisation du format toml, ouvrez le fichier que vous voulez rediriger et dans son entête, ajoutez :
```cfg
aliases: [/ancienne/URL/de/publication/fichier/]
```
*Si votre format de fichier de configuration est autre, adaptez !*
---
Puis modifier le fichier de configuration de Hugo, pour ajouter les directives
suivantes :
⇒ Ajoutez un type de media
```cfg
[mediaTypes."conf/nginx"]
```
⇒ Ajoutez une sortie à générer, pour la variable **home** :
```cfg
[outputs]
home = ["HTML", "nginx", …]
```
⇒ Ajoutez la sortie du format adéquat pour créer le fichier de redirections
pour nginx :
```cfg
[outputFormats.nginx]
baseName = "redirections.conf"
isPlainText = true
mediatype = "conf/nginx"
notAlternative = true
path = "nginx-config"
```
---
Puis, créer le **layout** nécessaire : `layout/index.nginx`, tel que :
```cfg
# Nginx redirect
{{ range $p := .Site.Pages -}}
{{ range .Aliases }}
rewrite ^{{ . }}$ {{ $p.RelPermalink }} permanent;
{{ end -}}
{{- end -}}
```
---
- Si votre site est monolingue, hugo générera dans le sous-répertoire
`nginx-config/redirections.conf`
- Si votre site est multilingues, hugo générera chaque fichier `redirections.conf`
dans chaque sous-répertoire de langue, tel que `fr/nginx-config/redirections.conf`.
Voilà, toute la configuration Hugo prête à être fonctionnelle !
### nginx
La configuration présentée ci-dessous est relative à mon site multilingue…
*Si le votre est monolingue, adaptez !*
---
Lorsque vous testerez la configuration, nginx se plaindra, telle que :
```sh
nginx: [emerg] open() "/var/www/htdocs/doc.huc.fr.eu.org/www/fr/nginx-conf/redirections.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/domain.tld.conf:15
```
Et, oui le fichier existe bien, au bon endroit :
```
$ ls -al /var/www/htdocs/doc.huc.fr.eu.org/www/fr/nginx-config/redirections.conf
-rw-r--r-- 1 www www 397 Jul 28 13:23 /var/www/htdocs/doc.huc.fr.eu.org/www/fr/nginx-config/redirections.conf
```
---
Copions les fichiers de redirections à la racine du répertoire de configuration
de nginx :
```sh
# cp /var/www/htdocs/doc.huc.fr.eu.org/www/en/nginx-config/redirections.conf /etc/nginx/hugo-en-redirections.conf
# cp /var/www/htdocs/doc.huc.fr.eu.org/www/fr/nginx-config/redirections.conf /etc/nginx/hugo-fr-redirections.conf
```
Puis, avec la directive **include**, incluez ces fichiers de configuration
dans la directive **server** de l'hôte virtuel relatif au domaine, tel que :
```nginx
server "domain.tld" {
(…)
include /etc/nginx/hugo-en-redirections.conf;
include /etc/nginx/hugo-fr-redirections.conf;
(…)
location /(en|fr)/nginx-conf/redirections.conf {
deny all;
}
(…)
}
```
Pour finir, remarquez la direction **location** afin d'interdire toute
consultation.
Pensez à vérifier la configuration puis redémarrer le service :
```sh
# nginx -t && rcctl restart nginx
```
---
Voilà !
## Documentations
⇒ [Hugo: URL Management: Aliases](https://gohugo.io/content-management/urls/)
---
***Enjoy-ID! <br>
Enjoy-IT!***
---

6
layouts/index.nginx Normal file
View File

@ -0,0 +1,6 @@
# Nginx redirect
{{ range $p := .Site.Pages -}}
{{ range .Aliases }}
rewrite ^{{ . }}$ {{ $p.RelPermalink }} permanent;
{{ end -}}
{{- end -}}