# RETIRER TOUS LES COMMENTAIRES, ET NE LAISSER QUE CE QUI EST UTILE
### Pour désactiver la réutilisation des connections http avec le navigateur
#KeepAlive Off
### Pour désactiver la réutilisation des connections http avec le serveur mandaté
#SetEnv proxy-nokeepalive 1
### Réécriture des URLS
#RewriteEngine On
#RewriteRule ^/$ /moncontexte/index.php [L,R]
### Si l'application utilise des frames, autorise l'ouverture des frames de l'application par elle même
#Header set X-Frame-Options SAMEORIGIN
### pour autoriser que les pages du site soient imbriquées dans un frame d'un autre site
# pour les navigateurs qui ne supportent pas CSP
#Header append X-Frame-Options "ALLOW-FROM https://url-du-site-parent"
# pour les navigateurs qui supportent CSP
#Header set Content-Security-Policy "frame-ancestors 'self' https://url-du-site-parent;"
### Utile si l'application est mal foutue et ne positionne pas correctement ses types MIME
#Header unset X-Content-Type-Options
# Si l'application fournit des urls référencées dans des pages d'une autre application,
# et a besoin de ses propres cookies, force attribut SameSite=None pour tous ses cookies
# Header edit Set-Cookie ^(.*)$ $1;SameSite=None;Secure
### exemple pour fichier de log spécifique pour certains motifs d'url
#SetEnvIf Request_URI ^/motifatrouver(/|$) monenv
#ErrorLog ${APACHE_LOG_DIR}/$vhostFQDN-monenv-error.log env=monenv
#CustomLog ${APACHE_LOG_DIR}/$vhostFQDN-monenv-access.log combined env=monenv
### Debug des flux
# En cas de besoin de debug des flux chiffres, permet d'enregistrer les IO dans le error.log
# à combiner avec dumpio:trace7 dans loglevel ; attention à la quantité de logs, ne pas laisser actif au dela du debug
#DumpIOInput On
#DumpIOOutput On
### En cas de serveur mandaté en https, désactive les contrôles SSL du serveur mandaté si ce dernier utilise un certificat autosigné
#SSLProxyVerify none
#SSLProxyCheckPeerCN off
#SSLProxyCheckPeerName off
#SSLProxyCheckPeerExpire off
### Augmente les timeouts si le serveur mandaté a besoin de beaucoup de temps pour répondre
#Timeout 600
### Exemple de configuration de load balancer ; remplacer FQDN par le FQDN du virtualhost, et utiliser ça comme nom de balancer dans la macro de configuration
## stickysession: le nom du cookie utilisé pour stocker la route vers le backend
## retry : délai pendant lequel un serveur backend ne sera pas retenté s'il est considéré en défaut
## connectiontimeout : délai accordé pour créer la connexion vers le serveur backend avant de le considérer en défaut
## lbmethod : méthode d'équilibrage entre les balancermembers
## failonstatus : les codes d'erreur http qui peuvent être retournés par le backend et qu'on va considérer comme un défaut du backend
#Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
#
# BalancerMember "http://fqdn1" route=1 retry=10 connectiontimeout=5
# BalancerMember "http://fqdn2" route=2 retry=10 connectiontimeout=5
# ProxySet lbmethod=byrequests failonstatus=500,503 stickysession=ROUTEID
#
### Pour utiliser des accesspolicy différentes par portion d'URL
#
# Use InternalAccessPolicy
#
### Pour donner accès à des utilisateurs en plus de ceux acceptés par la policy
#
# Use InternalAccessPolicy
#
# Authname "Acces restreint"
# Authtype Basic
# AuthBasicProvider ldap-interne
# Use ConnexionLdapInterne
# Require ldap-user login1
# Require ldap-user login2
# Require ldap-attribute "memberof=cn=xxxxx"
#
### Si une API du site mandaté utilise des codes d'erreur HTTP pour communiquer une information fonctionnelle à son client (beurk)
#
# ProxyErrorOverride off
#
### Si l'application utilise des URLs avec des slashes encodés
#AllowEncodedSlashes On
### Pour utiliser les websockets. Principe général : il faut détecter la nécessité d'activer les websockets.
## Soit parce que le client a déjà inséré dans ses entêtes des attributs en rapport :
#RewriteEngine On
#RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
#RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
#RewriteRule .* ws://%{SERVER_NAME}%{REQUEST_URI} [P,QSA,L]
## Soit parce que l'url demandée est d'une forme qui permet de détecter que le client s'adresse à une partie serveur développée avec des websockets
#
# ProxyPass ws://${URL_DEST}/websockify
# ProxyPassReverse ws://${VHOST_FQDN}/websockify
#