Synology redirection http => https

Zup

Apprenti
26 Janvier 2021
38
1
8
Bonjour et bonne année à tous

J'héberge un wordpress sur Synology
Il est installé en Docker avec l'image officielle

Je voudrais mettre en place une redirection automatique de http vers https
Cette page me conseille de modifier le .htaccess ainsi :
Code:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Dans mon .htaccess il y a déjà :
Code:
# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont g>
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

J'ai tenté d'ajouter les directives de redirection https au début du paragraphe ainsi :
Code:
# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont g>
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

J'obtiens une erreur

J'ai tenté aussi de remplacer le contenu du htaccess initial par celui proposé, sans succès non plus.

Voici comment est configuré le proxy inversé :
ENDgs.png


SI quelqu'un y comprend quelque chose merci de son aide !
 
Bonjour,

Quel reverse proxy utilise tu ?

Tu peux faire la redirection au niveau de ton reverse proxy, plutôt que à posteriori au niveau du serveur web destinataire.
La redirection se faite via une règle 301.

Par exemple sur nginx, dans ton fichier de configuration du site destinataire dans 'sites-available', pour un site 'gitea' comme exemple :

Code:
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
  listen              80;
  server_name         gitea.mondomaine.fr;
  location / {
    return              301 https://$server_name$request_uri;
  }
}

server {
    listen 443 ssl http2;
    client_max_body_size 50m;
    server_name gitea.mondomaine.fr;

    include /etc/nginx/ssl/ciphers-mondomaine.fr.conf;

    access_log /var/log/nginx/gitea.mondomaine.fr.log combined;
    error_log /var/log/nginx/gitea.mondomaine.fr.log error;

    location / {
        proxy_pass http://192.168.3.18:3000;
        proxy_set_header Host $host;
        proxy_redirect http:// https://;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
 
Bonjour,

Merci de ta réponse,
J'utilise le reverse proxy proposé par Synology, dont une capture d'écran se trouve en fin de mon post.

Je rappelle que ce wordpress est dans un conteneur Docker. Je n'ai pas nginx de configuré dans ma machine.
 
  • J'aime
Réactions: bliz
essayer de mettre la redirection le htacces avant la ligne <IfModule mod_rewrite.c>, car là, c'est une condition pour index.php et vérifier que le htacces soit bien à la racine du site, là où il y a index.php ou index.html
 
Dans ton docker compose tu as mis quoi comme port extérieur?

Le voici :
Code:
version: '3.1'

services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8989:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: monuser
      WORDPRESS_DB_PASSWORD: monmotdepasse
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /volume1/docker/wordpress/html:/var/www/html
    depends_on:
      db:
        condition: service_healthy

  db:
    image: lscr.io/linuxserver/mariadb:latest
    restart: always
    environment:
      PUID: 1026
      PGID: 100
      TZ: Europe/Paris
      MYSQL_ROOT_PASSWORD: monmotdepasse
      MYSQL_DATABASE: wordpress
      MYSQL_USER: monuser
      MYSQL_PASSWORD: monmotdepasse
    volumes:
      - /volume1/docker/wordpress/mariadb:/config
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      start_period: 15s
      interval: 60s
      timeout: 10s
      retries: 3

  adminer:
    image: adminer
    restart: always
    ports:
      - 9090:8080

vérifier que le htacces soit bien à la racine du site, là où il y a index.php ou index.html
Il est bien à cet endroit

Essayer de mettre la redirection le htacces avant la ligne <IfModule mod_rewrite.c>

J'ai essayé ainsi, cela me renvoie une erreur "La page n’est pas redirigée correctement
Une erreur est survenue pendant une connexion à (ce site). La cause de ce problème peut être la désactivation ou le refus des cookies.
J'avais mis comme ça :

Code:
  GNU nano 7.2                        .htaccess
# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont gén>
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
 
tu es en port 80 et non 443, donc normal qu'il y est une erreur
et le port 8080, si c'est la parti admin de wordpress, si ce n'est pas le même port que le 443, il me semble que ça va faire le boxon avec la variable d'environnement php $_SERVER présente dans wordpress
 
@bliz Je me suis basé sur le tuto rédigé par un certain @EVO modérateur ici : tuto
S'il n'est pas bon, n'hésite pas à lui signaler (c'est un tuto pour Qnap mais cela ne change pas grand chose sur ces points)

J'ai tenté de remplacer 80 par 443 dans le docker compose mais j'ai plus rien qui fonctionne. Retour à l'état précédent :)

Merci tout de même en tout cas !
 
Le tuto de @EVO est pour un hébergement local, pas pour un hébergement avec accès externe.


Tu peux essayer aussi de faire ta redirection comme ceci dans ton fichier .htaccess
C'est comme cela que je procède pour mon site pro sous Apache :

Code:
<IfModule mod_headers.c>
....
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
...
</IfModule>

Cela a pour but de forcer les navigateurs à utiliser la version HTTPS de ton site et le cas échéant fera une redirection.
 
  • J'aime
Réactions: bliz et Zup