nginx – Reverse-Proxy für Apache und Socket.io auf einer SSL-fähigen Site

nginx – Reverse-Proxy für Apache und Socket.io auf einer SSL-fähigen Site

Meine SSLgesicherte Webanwendung besteht aus einem Apache-Server (PHP) und NodeJS (Socket.io). Um das Problem blockierter Ports in verschiedenen Netzwerken zu lösen, habe ich beschlossen, nginxdie Anfragen an die von mir festgelegten Ports umzuleiten. Aber ich hatte Probleme, alles richtig zu konfigurieren.

Bearbeitet:

Ich möchte nginx verwenden, um alle Anfragen abzuhören port 443und sie auf meinen PHP/NodeJS-Dienst zu verweisen. Hier ist die Konfiguration für /etc/nginx/sites-available/defaultdie Datei:

server {

    listen 443;
    ssl on;
    ssl_certificate    /var/www/project/mynode/ssl.crt;
    ssl_certificate_key  /var/www/project/mynode/private.key;

    server_name domain.com ;
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    root /var/www/;

    location /project/{
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://127.0.0.1:442/project/;
    }

    location /backend/{
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://127.0.0.1:8080/project/angular/backend/;
    }

    location /connect/{
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://127.0.0.1:9000/;
    }
}

Und ich versuche, auf folgende Weise eine Verbindung zum Socket herzustellen:

io.connect("https://www.domain.com/connect");

aber der Socket wird nie verbunden. Die Dienste von Apache funktionieren einwandfrei.

Dies ist der Fehler, der bei mir auftritt:

https://www.domain.com/socket.io/?EIO=3&transport=polling&t=1434534878619-0 404 (Not Found)

Wenn ich jedoch den Port erwähne, funktioniert es einwandfrei. Hier ist der funktionierende Code dafür:

io.connect("https://www.domain.com:9000");

Ich habe die ports.confund apache2/sites-available/defaultDateien gemäß den Dokumentationen und Anleitungen konfiguriert und alles versucht, was ich interpretieren konnte, aber ich bekomme immer noch keine Verbindung zu meinem Socket hergestellt.

verwandte Informationen