J'utilise la configuration ci-dessous dans nginx pour la connexion proxy RDP:
server {
listen 80;
server_name domain.com;
location / {
proxy_pass http://192.168.0.100:3389;
}
}
mais la connexion ne passe pas. Je suppose que le problème est http
dans proxy_pass
. Googler "Nginx RDP" n'a pas donné grand-chose.
Tout le monde sait si c'est possible et si oui comment?
En fait, vous avez raison, le http
est le problème, mais pas exactement celui-là dans votre bloc de code. Expliquons-le un peu:
Dans votre nginx.conf
fichier, vous avez quelque chose de similaire à ceci:
http {
...
...
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Donc, tout ce que vous écrivez dans vos fichiers de conf se trouve dans ce bloc/portée http
. Mais rdp n'est pas http est un protocole différent.
La seule solution que je connaisse pour que nginx gère cela est de travailler au niveau tcp
.
Alors à l'intérieur de votre nginx.conf
et en dehors du bloc http
, vous devez déclarer le bloc stream
comme ceci:
stream {
# ...
server {
listen 80;
proxy_pass 192.168.0.100:3389;
}
}
Avec la configuration ci-dessus, il suffit de mandater votre backend sur la couche TCP avec un coût bien sûr. Comme vous pouvez le remarquer, il manque le server_name
attribut vous ne pouvez pas l'utiliser dans la portée stream
, en plus vous perdez toutes les fonctionnalités de journalisation qui viennent au niveau http
.
Pour plus d'informations sur ce sujet, consultez le docs
Pour tous ceux qui cherchent à équilibrer la connexion RDP à l'aide de Nginx, voici ce que j'ai fait:
Configurez nginx comme vous le feriez normalement, pour rediriger le trafic HTTP (S) vers le serveur souhaité.
Sur ce serveur, installez myrtille (il a besoin de IIS et .Net 4.5) et vous pourrez RDP dans votre serveur à partir d'un navigateur!