Bonjour à tous,
Tout nouveau ici, et (presque) nouveau sur Linux, je cherche désespérément de l'aide pour faire fonctionner ce bazar :-)
Ça fait 1 semaine que je tourne en rond et je n'arrive pas à trouver la solution malgré tous les forums… Bref !
Le pb : Le reverse proxy NGINX fonctionne bien pour le port 80 mais pas pour 443 (avec aucun container)
Ma config - un serveur avec 4 containers LXD dont 1 reverse proxy NGINX
Ubuntu 20.04
=>LXD 4.0.4
=> Container LXC01 - APACHE2
=> Container LXC02 -APACHE2
=> Container LXC03 - NGNIX
=> Container PROXY - NGNIX REVERSE PROXY
Sur le HOST les ports 80 et 443 sont ouverts au PROXY (via LXC commande)
Sur les containers APACHE
# apt install -y apache2
Ajout des deux lignes (adresse proxy) dans le fichier ci-dessous
#nano /etc/apache2/conf-available/remoteip.conf
RemoteIPHeader X-Real-IP
RemoteIPTrustedProxy 10.68.14.196 fd42:1052:cb6:c1b8:216:3eff:fed0:241d
Puis
# a2enconf remoteip
Et
# a2enmod remoteip
Sur le container PROXY
# lxc exec proxy -- sudo apt install -y nginx
Création du fichier de conf
# nano /etc/nginx/sites-available/lxc01.monsitepublic.fr
server {
listen 80 proxy_protocol;
listen [::]:80 proxy_protocol;
server_name lxc01.monsitepublic.fr
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass [url]http://lxc01.lxd[/url];
}
real_ip_header proxy_protocol;
set_real_ip_from 127.0.0.1;
}
Publication du fichier
# ln -s /etc/nginx/sites-available/lxc01.monsitepublic.fr /etc/nginx/sites-enabled/
Test et Relance de NGINX - test http://lxc01.monsitepublic.fr ça fonctionne pour le port 80.
Configuration 443
Pas touché au fichier /etc/nginx/nginx.conf
# apt install certbot python3-certbot-nginx
# sudo certbot --nginx
=> success
Le fichier devient :
# nano /etc/nginx/sites-available/lxc01.monsitepublic.fr
server {
listen 80 proxy_protocol;
listen [::]:80 proxy_protocol;
server_name lxc01.monsitepublic.fr;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass [url]http://lxc01.lxd[/url];
}
real_ip_header proxy_protocol;
set_real_ip_from 127.0.0.1;
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/lxc03.monsitepublic.fr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/lxc03.monsitepublic.fr/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Test et Relance de NGINX -
TEST HTTPS://lxc01.monsitepublic.fr : impossible d’accéder à cette page !
J'ai essayé en changeant proxy_pass
http://lxc01.lxd; par la réelle adresse IP - pareil
Avec un certificat autosigné - pareil
J'ai viré les autres sites-enabled (default) = pareil
Réinstallé, recommencé 20 fois, changer plein de choses..rien à faire ça marche po !
Analyse :
Apparemment la requête arrive au proxy mais rien ne se passe (par rapport aux lignes sur le port 80)
# cat /var/log/nginx/access.log (dernière ligne)
[b]127.0.0.1 - - [14/Jan/2021:21:45:45 +0100] "PROXY TCP4 90.55.xxx.xxx 91.xxx.xxx.xxx 29102 443" 400 166 "-" "-"[/b]
Depuis le proxy le ping LXC03 fonctionne
Depuis le host on voit bien le proxy en écoute sur le 443
#sudo ss -ltp '( sport = :http || sport = :https )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 *:http *:* users:(("lxd",pid=26665,fd=8),("lxd",pid=26665,fd=3))
LISTEN 0 4096 *:https *:* users:(("lxd",pid=26826,fd=8),("lxd",pid=26826,fd=3))
Dans le proxy
# netstat -nlp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2840/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2840/nginx: master
tcp6 0 0 :::80 :::* LISTEN 2840/nginx: master
tcp6 0 0 :::443 :::* LISTEN 2840/nginx: master
# sudo ufw status : Status: inactive
error_log /var/log/nginx/error.log==> RAS
J'ai essayé différentes config de sites-available/lxc01.monsitepublic.fr => pas de résultat
Avec la dernière version de CertBot pareil
Y aurait-il un module Nginx à installer ? LXD ne serait-il pas capable d'assurer le transit ?
Voilà je ne sais plus où regarder !
Merci d'avance pour votre aide.