Il y a un serveur web nginx écoutant à la fois sur les ports 80 et 443. Je voudrais traiter toutes les demandes http comme d'habitude et renvoyer toutes les demandes non-http vers un autre port (disons 1234).
Ma question est très similaire à une déjà répondue sur stackoverflow : Est-il possible de rediriger les demandes de connexion NON-http vers un autre port dans nginx?. Peut-être, je comprends mal la réponse la plus votée, mais quand j'ajoute quelque chose comme ceci à nginx.conf :
stream {
upstream backend {
server example.com:1234;
}
server {
listen 80;
proxy_pass backend;
}
}
Je reçois l'erreur (attendue) bind() to 0.0.0.0:80 failed (98: Address already in use)
.
2 votes
Pourquoi vous attendez-vous même à ce qu'il y ait du trafic non-HTTP atteignant le port 80 sur le serveur ?
0 votes
Je voudrais simplement remplacer BOSH par le trafic d'application native. De plus, il y a une restriction à n'utiliser que le port 80.
0 votes
Je ne pense pas qu'il existe un tel logiciel qui distinguerait entre le trafic HTTP et les autres sur un seul port. Même si l'on pouvait rechercher les en-têtes / commandes HTTP dans les données reçues du client, et ainsi décider de quel type de trafic il s'agit, cela serait beaucoup trop fragile. Vous devez trouver une autre solution à votre problème.
0 votes
@TeroKilkanen par exemple sslh distingue SSL/SSL/OpenVPN et quelques autres, y compris le simple HTTP. Mais ce n'est certainement pas un travail pour nginx.
0 votes
@semyonfilippov regarde sslh
0 votes
@AlexeyTen merci, sslh fonctionne parfaitement :) Pourriez-vous ajouter une réponse, afin que je puisse marquer cette question comme résolue ?