Chrisdu80 Posted December 14, 2017 Report Share Posted December 14, 2017 Bonjour à tous, Je prépare la mise en place d'un serveur linux / nginx pour faire du proxy reverse vers une zone DMZ, le tout en SSL. Tous mes serveurs sont stockés sur un Hyper-V, j'ai aussi une IP publique, un seul nom de sous-domaine. Concernant le nom de sous-domaine, je n'ai pas le choix, s’est imposé. Donc pour ma configuration de Nginx je vais utiliser des redirections vers des ports spécifique. Mon serveur Nginx est une VM derrière un Firewall physique, il n’a donc qu’une carte réseau vue que l’accès externe se fera par le biais d’une authentification dur (OTP) avec VPN. Ce serveur sera accessible depuis un WAN privé. Le Nginx est le seul serveur qui peux discuter avec la zone DMZ depuis l’extérieur (configuration sur le Firewall) Dans ma zone DMZ (IP non réel) : 192.168.253.2 à serveur Web (opérationnel sous Ubuntu / Apache2) 192.168.253.5 à serveur NextCloud (opérationnel sous Ubuntu / Apache2) 192.168.253.6 à serveur OnlyOffice (opérationnel sous Ubuntu / Apache2) Voici la configuration du fichier Nginx (Nom de domaine et IP non réel) : "vim /etc/nginx/sites-available/default" Configuration de base + SSL: server { listen 80; return 301 https://$host$request_uri; } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2; server_tokens off; ssl on; server_name sousdomain.domain.com; access_log /var/log/nginx/nginx.certif-ssl.access.log; error_log /var/log/nginx/nginx.certif-ssl.error.log warn; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php?q=$uri&$args; # On cache les fichiers statiques location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; } # On interdit les dotfiles location ~ /\. { deny all; } } ## PHP location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_read_timeout 60; } ## SSL ssl_certificate /etc/nginx/ssl/bundle.crt; ssl_certificate_key /etc/nginx/ssl/certif-ssl_mondomain_com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_prefer_server_ciphers on; resolver 8.8.8.8 8.8.4.4; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/nginx/ssl/bundle.crt; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Powered-By "Mon PHP !"; } La redirection du http vers le https fonctionne parfaitement et le certificat est testé sur www.ssllabs.com est de catégorie A. Maintenant la partie reverse proxy vers les serveurs. server { listen 8082; server_name sousdomain.domain.com; location / { proxy_pass http://192.168.253.2:8082; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Url-Scheme $scheme; } location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { proxy_pass http://192.168.253.2:8082; proxy_set_header Host $http_host; } } Sur cette redirection, on utilise l'adresse http://sousdomain.domain.com:8082 pour retourner vers http://192.168.253.2:8082, cela fonctionne j'ai bien ma page de test Apache2 à l'écran. server { listen 8086; server_name sousdomain.domain.com; location / { rewrite /nextcloud/(.*) /$1 break; proxy_pass https://192.168.253.6; proxy_redirect http:// https://; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Url-Scheme $scheme; } location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { proxy_pass http://192.168.253.6; proxy_set_header Host $host; } } Sur cette redirection , on utilise l'adresse https://sousdomain.domain.com:8086 pour retourner vers https://192.168.253.6, ici ca pose un problème. Quand je vais sur la page https://192.168.253.6 le site fonctionne bien, si je vais sur https://sousdomain.domain.com:8086 j'ai une erreur ERR_TUNNEL_CONNECTION_FAILED Sur mon 3em serveur j'ai une configuration équivalente et j'ai le même souci. Je pense que ma redirection SSL pose problème mais je galère ;). Si quelqu'un peux d'aider je l'en remerci d'avance. Link to comment Share on other sites More sharing options...
MathTek Posted December 15, 2017 Report Share Posted December 15, 2017 Hello, Je suppose que tes serveurs réel 192.168.253.5 et 192.168.253.6 sont en HTTPS alors que 192.168.253.2 est en HTTP ? Ducoup cette ligne la doit être corrigé (en rouge) par l'adresse en HTTPS non ? server { listen 8086; server_name sousdomain.domain.com; location / { rewrite /nextcloud/(.*) /$1 break; proxy_pass https://192.168.253.6; proxy_redirect http:// https://; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Url-Scheme $scheme; } location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { proxy_pass http://192.168.253.6; proxy_set_header Host $host; } } Dis nous si c'est mieux avec ça Link to comment Share on other sites More sharing options...
Recommended Posts