110 lines
4.5 KiB
Text
110 lines
4.5 KiB
Text
# 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
|
|
#<Proxy "balancer://FQDN">
|
|
# 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
|
|
#</Proxy>
|
|
|
|
|
|
### Pour utiliser des accesspolicy différentes par portion d'URL
|
|
#<locationmatch "\
|
|
# (?=^/motif1/)|\
|
|
# (?=^/motif2/)">
|
|
# Use InternalAccessPolicy
|
|
#</Locationmatch>
|
|
|
|
### Pour donner accès à des utilisateurs en plus de ceux acceptés par la policy
|
|
#<Location />
|
|
# Use LDAPUserAccessPolicy
|
|
# Require ldap-user login1
|
|
# Require ldap-user login2
|
|
# Require ldap-attribute "memberof=cn=xxxxx"
|
|
#</Location>
|
|
|
|
### Pour ne pas propager l'authentification vers le serveur mandaté
|
|
# RequestHeader unset Authorization
|
|
|
|
|
|
### Si une API du site mandaté utilise des codes d'erreur HTTP pour communiquer une information fonctionnelle à son client (beurk)
|
|
#<Location "/api/">
|
|
# ProxyErrorOverride off
|
|
#</Location>
|
|
|
|
|
|
### 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
|
|
#<Location /websockify>
|
|
# ProxyPass ws://${URL_DEST}/websockify
|
|
# ProxyPassReverse ws://${VHOST_FQDN}/websockify
|
|
#</Location>
|
|
|