Dans cet article, nous allons expliquer comment configurer un site Wix derrière un reverse proxy NGINX. Nous couvrirons deux configurations : une sur un serveur NGINX existant et une sur Kubernetes.
Table of Contents
Configuration sur un Serveur NGINX Existant
Prérequis:
- Serveur NGINX fonctionnel.
- Domaine pointant vers votre serveur NGINX.
Étape 1 : Ajouter la Configuration NGINX
Ajoutez la configuration suivante dans votre fichier de configuration NGINX (par exemple, /etc/nginx/conf.d/default.conf
):
server {
listen 80;
server_name votre_domaine.com;
location ~ ^/(.*)$ {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_min_length 1000;
proxy_ssl_server_name on;
proxy_ssl_verify off;
proxy_set_header Referer https://votre_site_wix.wixsite.com/nomdusite;
add_header Host votre_site_wix.wixsite.com;
proxy_set_header X-Forwarded-Host "";
proxy_set_header X-Forwarded-For "";
proxy_set_header Accept-Encoding "";
proxy_set_header Cookie "";
proxy_pass_request_headers on;
proxy_http_version 1.1;
resolver 8.8.8.8;
proxy_pass https://votre_site_wix.wixsite.com/nomdusite/$1$is_args$args;
sub_filter_types text/html application/javascript application/x-javascript text/javascript;
# Injecter le script pour masquer WIX_ADS
sub_filter '</body>' '<script>
document.addEventListener("DOMContentLoaded", function() {
var ads = document.getElementById("WIX_ADS");
if (ads) {
ads.style.display = "none";
}
document.querySelectorAll("style").forEach(function(style) {
if (style.textContent.includes("--wix-ads-height")) {
style.textContent = style.textContent.replace(/--wix-ads-height:[^;]+;/g, match => {
let propName = match.split(":")[0];
return `${propName}: initial !important;`;
});
}
});
});
</script></body>';
# Substitutions existantes
sub_filter "https%3A%2F%2Fvotre_site_wix.wixsite.com%2Fnomdusite" "https%3A%2F%2F$http_host";
sub_filter "https%3A%2F%2Fvotre_site_wix.wixsite.com" "https%3A%2F%2F$http_host";
sub_filter https://votre_site_wix.wixsite.com/nomdusite https://$http_host;
sub_filter https://votre_site_wix.wixsite.com https://$http_host;
sub_filter "https:\/\/votre_site_wix.wixsite.com\/nomdusite" "https:\/\/$http_host";
sub_filter "https:\/\/votre_site_wix.wixsite.com" "https:\/\/$http_host";
sub_filter_once off;
}
}
Étape 2 : Redémarrer NGINX
Après avoir modifié le fichier de configuration, redémarrez NGINX pour appliquer les changements :
sudo systemctl restart nginx
Votre site sera maintenant accessible sur http://votre_domaine.com
Charge à vous d’ajouter une configuration TLS si nécessaire.
Configuration sur Kubernetes
Prérequis:
- Cluster Kubernetes fonctionnel.
kubectl
configuré pour votre cluster.- Un domaine pointant vers votre cluster Kubernetes.
Étape 1 : Créer le ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: default
data:
nginx.conf: |
server {
listen 80;
server_name votre_domaine.com;
location ~ ^/(.*)$ {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_min_length 1000;
proxy_ssl_server_name on;
proxy_ssl_verify off;
proxy_set_header Referer https://votre_site_wix.wixsite.com/nomdusite;
add_header Host votre_site_wix.wixsite.com;
proxy_set_header X-Forwarded-Host "";
proxy_set_header X-Forwarded-For "";
proxy_set_header Accept-Encoding "";
proxy_set_header Cookie "";
proxy_pass_request_headers on;
proxy_http_version 1.1;
resolver 8.8.8.8;
proxy_pass https://votre_site_wix.wixsite.com/nomdusite/$1$is_args$args;
sub_filter_types text/html application/javascript application/x-javascript text/javascript;
# Injecter le script pour masquer WIX_ADS
sub_filter '</body>' '<script>
document.addEventListener("DOMContentLoaded", function() {
var ads = document.getElementById("WIX_ADS");
if (ads) {
ads.style.display = "none";
}
document.querySelectorAll("style").forEach(function(style) {
if (style.textContent.includes("--wix-ads-height")) {
style.textContent = style.textContent.replace(/--wix-ads-height:[^;]+;/g, match => {
let propName = match.split(":")[0];
return `${propName}: initial !important;`;
});
}
});
});
</script></body>';
# Substitutions existantes
sub_filter "https%3A%2F%2Fvotre_site_wix.wixsite.com%2Fnomdusite" "https%3A%2F%2F$http_host";
sub_filter "https%3A%2F%2Fvotre_site_wix.wixsite.com" "https%3A%2F%2F$http_host";
sub_filter https://votre_site_wix.wixsite.com/nomdusite https://$http_host;
sub_filter https://votre_site_wix.wixsite.com https://$http_host;
sub_filter "https:\/\/votre_site_wix.wixsite.com\/nomdusite" "https:\/\/$http_host";
sub_filter "https:\/\/votre_site_wix.wixsite.com" "https:\/\/$http_host";
sub_filter_once off;
}
}
Appliquez le ConfigMap:
kubectl apply -f nginx-config.yaml
Étape 2 : Créer le Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- name: nginx-config-volume
mountPath: /etc/nginx/conf.d
volumes:
- name: nginx-config-volume
configMap:
name: nginx-config
Appliquez le Deployment:
kubectl apply -f nginx-deployment.yaml
Étape 3 : Créer le Service
apiVersion: v1
kind: Service
metadata:
name: nginx-proxy-service
namespace: default
spec:
clusterIP: 10.43.39.63
clusterIPs:
- 10.43.39.63
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-proxy
sessionAffinity: None
type: ClusterIP
Appliquez le Service:
kubectl apply -f nginx-service.yaml
Étape 4 : Créer l’Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: votre_domaine.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: nginx-proxy-service
port:
number: 80
tls:
- hosts:
- votre_domaine.com
secretName: tls-votre_domaine-com
Appliquez l’Ingress:
kubectl apply -f nginx-ingress.yaml
Votre site sera maintenant accessible sur https://votre_domaine.com
Avec cette configuration, vous pourrez intégrer votre site Wix derrière votre domaine existant et donner à votre site une apparence plus professionnelle. Assurez-vous de tester chaque étape pour vérifier que tout fonctionne correctement.