Reverse proxy Nginx TLS
Petit mémo pour une configuration de reverse proxy sous nginx permettant de présenter en TLS (https) le site web d’un autre serveur non TLS.
Le serveur srvA.example.net est le virtualhost sur le serveur reverse proxy frontend.
Le serveur srvB.example.net est le serveur d’application web backend.
# Le serveur http sur le port 80
server {
listen [::]:80; # ipv6
listen 80; # ipv4
server_name srvA.example.net;
# redirection du traffic http vers https
return 301 https://srvA.example.net$request_uri;
}
# le serveur https sur le port 443
server {
listen 443; #ipv4
listen [::]:443; #ipv6
server_name srvA.example.net;
# la configuration ssl via des includes (paramétrages des certificats et diverses options de sécurité)
include snippets/ssl-progivet.net.conf;
include snippets/ssl-params.conf;
# partie reverse proxy
location / {
proxy_pass http://srvB.example.net:80;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $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;
add_header Front-End-Https on;
proxy_redirect off;
}
}

