Ich würde das gleiche wie Tudor vorschlagen: ein Proxy in Knoten geschrieben.
Allerdings würde ich empfehlen, eine breiter verwendete und getestete Bibliothek wie node-http-proxy zu verwenden. Es ist wirklich einfach zu installieren, und wird erreichen, was Sie in weniger als 20 Zeilen Code benötigen.
var httpProxy = require('http-proxy')
httpProxy.createServer({
target: {
host: 'stuff.com',
port: 80
},
ssl: {
key: fs.readFileSync('./ssl-key.pem', 'utf8'),
cert: fs.readFileSync('./ssl-cert.pem', 'utf8')
}
}).listen(443);
Wenn ein Kunde dann greift https://reverseproxy.com/image.png, würde der Prozess wie folgt

Ich habe in diesem Schema, das die Reverse-Proxy läuft auf einem anderen Server als der Webserver angenommen dient die Bilder, aber das muss nicht der Fall sein. Wenn beide auf demselben Server laufen, verwenden Sie einfach host: 'localhost'
im Bereich target
.
-
Für den Fall, Sie sind mit Knoten nicht vertraut sind, ist hier, was Sie tun müssen schnell dieses Setup auszuführen.
- Installieren Knoten
- eine neue Datei erstellen Sie den Code in yourprojectpath/index.js
- Generieren Sie eine package.json Datei, indem Sie enthält
npm init
in Ihrem Projektverzeichnis
- Run
npm install --save http-proxy
die Installation http-proxy
Bibliothek und in der Lage sein, es im Code
zu verwenden Sie sollten jetzt in der Lage sein, die Reverse-Proxy von
node index.js
laufen Wenn Sie sich mit dieser in der Produktion planen, empfehle ich Ihnen einen Blick auf PM2 nehmen. Es ist ein Prozess-Manager für Knoten, die im Grunde gewährleistet, dass Ihre Anwendung immer ausgeführt wird, egal was. Insbesondere wird es neu gestartet, wenn irgendeine Art von Ausnahme von der Anwendung ausgelöst wird und sie hätte beendet werden müssen.
Installation:
npm install -g pm2
Verbrauch:
pm2 start index.js
Noch ein paar Anmerkungen:
- stellen Sie sicher, dass Ihre
.pem
Dateien entsprechenden Berechtigungen und Eigentümer haben. chmod 400
ist normalerweise eine gute Option (nur vom Eigentümer lesbar). Der Benutzer, der die Node-Anwendung ausführt, sollte sie jedoch lesen können.
- Wenn Ihr Server hinter einer (Software- oder Hardware-) Firewall ausgeführt wird, müssen Sie möglicherweise den Port 443 für eingehenden Datenverkehr öffnen
- Abhängig von Ihrem SSL-Zertifikatsanbieter müssen Sie möglicherweise die Dateien konvertieren, die er Ihnen bereitstellt PEM-Format
- , wenn nötig, Knoten-http-Proxy unterstützt additional options wie das Hinzufügen von Header, wenn eine Anforderung proxied wird
- das Skript, das ich oben dargestellt wird vorausgesetzt, Sie haben
ssl-key.pem
und ssl-cert.pem
im selben Verzeichnis wie es
Hoffnung das hilft! Und fragen Sie einfach, ob Ihnen etwas unklar erscheint
FYI, Sie können einen Webserver einrichten, z. Apache oder Nginx als Reverse-Proxy. Wenn Sie mehr Flexibilität benötigen, verwenden Sie HAProxy. Guides für all diese können leicht gefunden werden. Führen Sie sie getrennt von Ihrer Anwendung aus und fügen Sie zur Sicherheit eine Sitzung/Token-Authentifizierung hinzu. –
Als Nebenbemerkung - Sie können Bild in E-Mail einbetten, anstatt einen Bildserver zu verwenden, die meisten E-Mail-Clients, wenn nicht alle, würden den Bildlink standardmäßig blockieren, es sei denn, die Empfangsbestätigung weist den Absender auf. Wenn E-Mails an externe Parteien gesendet werden, spart dieser Ansatz Ihre Kosten für die Bandbreite, wenn sie die E-Mail mehr als einmal lesen. – Hang
Dank @Hang. Dies ist nur für eingehende E-Mails (außerhalb meines Systems). Wenn wir E-Mails verschicken, tauschen wir die Bild-URLs wieder auf ihr Original aus, so dass niemand außerhalb unseres Reverse-Proxys schlägt. In der Tat werden wir es nach IP sperren. – richard