J'essaie de localiser un exemple de configuration de haut niveau pour ma situation actuelle. Nous avons un certificat SSL Wildcard pour plusieurs sous-domaines, qui sont sur plusieurs serveurs internes =IIS.
site1.example.com (X.X.X.194) -> IISServer01:8081
site2.example.com (X.X.X.194) -> IISServer01:8082
site3.example.com (X.X.X.194) -> IISServer02:8083
Je cherche à gérer le trafic SSL entrant via une entrée de serveur, puis transmettez le domaine spécifique au fichier interne IIS. Il semble que j'ai 2 options:
CODE Une section d'emplacement pour chaque sous-domaine (semble désordonné des exemples que j'ai trouvés)
Transférer le trafic non crypté vers le même serveur Nginx configuré avec différentes entrées de serveur pour chaque nom d'hôte de sous-domaine. (Au moins cela semble être une option).
Mon objectif ultime est de consolider une grande partie de notre trafic SSL à passer par NGINX afin que nous puissions utiliser HAPROXY pour charger des serveurs de balance.
Est-ce que l'approche n ° 2 fonctionne au sein de Nginx si je configurais correctement les entrées proxy_set_header?
J'envisage quelque chose sur les lignes de cela dans mon fichier de configuration final (à l'aide de l'approche n ° 2):
server {
listen Y.Y.Y.174:443; #Internally routed IP address
server_name *.example.com;
proxy_pass http://Y.Y.Y.174:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site1.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site2.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:8081;
server_name site3.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer02:8083;
}
Cela semble être un moyen, mais je ne suis pas sûr que si c'est le meilleur moyen. Est-ce que je manque une approche plus simple de cela?
Je ferais quelque chose comme ça (testé avec Nginx 1.4.2, semble fonctionner):
server {
listen 127.0.0.1:443 ssl;
server_name site1.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8081;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site2.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8082;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site3.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.3:8083;
}
}
Avec au moins cela dans common.conf
:
ssl on;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
Croyez-le ou non, vous pouvez le faire:
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 5m;
server {
listen Y.Y.Y.174:443 default_server ssl;
server_name _;
ssl_certificate /etc/pki/tls/certs/server.chained.crt;
ssl_certificate_key /etc/pki/tls/private/server.key;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site1.example.com;
[...]
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site2.example.com;
[...]
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site3.example.com;
[...]
proxy_pass http://IISServer02:8083;
}
Non Inclut, le certificat est chargé en mémoire une seule fois et la session devrait même rester mise en cache lorsque l'utilisateur passe du sous-domaine au sous-domaine, ce qui vous permet d'économiser de la puissance de la poignée de main.
Je ne trouve aucune documentation au-delà ce poste de défaut de serveur Pour suggérer pourquoi cela fonctionne, mais je peux vous assurer que cela fait.