Προς το περιεχόμενο

Mosquitto σε subdomain πίσω από nginx;


Haldol

Προτεινόμενες αναρτήσεις

Καλησπέρα στην παρέα. :P

Έχω ένα Ubuntu 16.04 στην DigitalOcean, πάνω στο οποίο εχω στήσει ένα MQTT broker. Ακούει στην 8883. Όλα καλά ως εδώ: συνδέω όποιο client θέλω δίνοντας καρφωτά IP + port. Παίζει.

Τώρα όμως θέλω να το σετάρω έτσι ώστε να μη συνδέομαι με IP, αλλά με ένα subdomain. Δηλαδή ο client μου να μη συνδέεται στο XXX.XXX.XXX.XXX:8883, αλλά στο "mqtt.mydomain.com". Εννοείται πως τα A records του subdomain δείχνουν τον server. Έχω σετάρει και τον nginx με τα παρακάτω, αλλά φως δε βλέπω...

server {
        listen 80;
        server_name mqtt.mydomain.com;
        return 404;
}

server {
        listen 1883;
        server_name mqtt.mydomain.com;

        location / {
                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;

                proxy_pass              http://localhost:8883;
                proxy_read_timeout      30;
        }
}

Εάν συνδεθώ με web browser πάνω στο subdomain (στην 80 δηλαδή) ορθώς επιστρέφει 404, όπως του έχω ζητήσει.

Εάν πάω να συνδεθώ με κάποιο MQTT client στο subdomain, στην 1883, κάνει απόπειρα να συνδεθεί, έως ότου έρθει timeout και αποτύχει.

Καμία ιδέα; Σκέφτομαι μήπως πρέπει να ορίσω stream block, στο οποίο θα περιλάβω το 2ο server block, μήπως θεωρεί "γενική" TCP/IP κυκλοφορία το MQTT...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Έτσι που το έχεις στήσει προσπαθείς να μιλήσεις HTTP στο MQTT που δέν δουλεύει γιατί είναι δικό του layer 7 protocol.

Ή θα το κάνεις με proxy_pass block στον nginx ή θα αντικαταστήσεις τον nginx με έναν haproxy και θα το βάλεις από πίσω του σαν backend pool με TCP connection handling.

Συγγνώμη που δέν είμαι πολύ αναλυτικός, εάν χρειάζεσαι περισσότερες πληροφορίες ρώτα εδώ.

 

Επεξ/σία από NullScan
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

3 ώρες πριν, NullScan είπε

Έτσι που το έχεις στήσει προσπαθείς να μιλήσεις HTTP στο MQTT που δέν δουλεύει γιατί είναι δικό του layer 7 protocol.

Oops. Μόλις κόπηκα στο Computer Networks 101. :P

Θα μελετήσω και τις δύο λύσεις (proxy_pass || haproxy) και θα επανέλθω. Λογικά θα προτιμήσω τη λύση του Nginx, μιας και θέλω και HTTP server, οπότε δε θα ξεστηθεί.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χαχα, εντάξει μή το κάνεις και θέμα, συμβαίνουν αυτά.

Εάν χρειάζεσαι βιβλιογραφία, απλώς ψάξε για nginx reverse proxy TCP mode και θα βρεις άπειρα παραδείγματα.

Α, και θες πες μας κιόλας τι απέγινε! Καλό ψάξιμο!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...