Ich verwende LEMP-Stack und Node JS auf meinem Debian-Server. Nginx arbeitet an Port 80 und Node JS an 8080. Ich habe eine neue Subdomain erstellt: cdn.domain.com für nodejs app. Derzeit kann ich auf die Node JS-Anwendung nur wie cdn.domain.com:8080/ zugreifen. Was ich tun möchte, ist Nginx so zu konfigurieren, dass ich, wenn ich auf cdn.domain.com eingebe, App auf Port 80 zum Laufen bringen kann. Aber ich kann nicht herausfinden, wie.
NGINX unterstützt WebSockets, indem ein Tunnel zwischen einem Client und einem Back-End-Server eingerichtet werden kann. Damit NGINX die Upgrade-Anforderung vom Client an den Backend-Server senden kann, müssen die Header für Upgrade und Verbindung explizit festgelegt werden. Zum Beispiel:
# WebSocket proxying
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
# The Host name to respond to
server_name cdn.domain.com;
location / {
# Backend nodejs server
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
So einfach ist das
stellen Sie sicher, dass example.com in Ihre Domäne (oder IP) und 1337 in Ihren Node.js-Anwendungsport geändert wird:
server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_Host;
proxy_pass "http://127.0.0.1:1337";
}
}
Quelle: https://eladnava.com/binding-nodejs-port-80-using-nginx/
So können Sie das erreichen.
upstream {
nodeapp 127.0.0.1:8080;
}
server {
listen 80;
# The Host name to respond to
server_name cdn.domain.com;
location /(.*) {
proxy_pass http://nodeapp/$1$is_args$args;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $Host;
proxy_set_header X-Real-Port $server_port;
proxy_set_header X-Real-Scheme $scheme;
}
}
Sie können diese Konfiguration auch verwenden, um die Last zwischen mehreren Knotenprozessen zu laden, z.
upstream {
nodeapp 127.0.0.1:8081;
nodeapp 127.0.0.1:8082;
nodeapp 127.0.0.1:8083;
}
Wo Sie Ihren Knotenserver auf den Ports 8081, 8082 und 8083 in separaten Prozessen ausführen. Nginx kann den Datenverkehr zwischen diesen Serverprozessen problemlos ausgleichen.
Sie können einen Upstream definieren und in proxy_pass verwenden
http://rohanambasta.blogspot.com/2016/02/redirect-nginx-request-to-upstream.html
server {
listen 8082;
location ~ /(.*) {
proxy_pass test_server;
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_redirect off;
}
}
upstream test_server
{
server test-server:8989
}
server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_Host;
proxy_pass "http://127.0.0.1:8080";
} }
Einfach ist:
server {
listen 80;
server_name p3000;
location / {
proxy_pass http://0.0.0.0:3000;
include /etc/nginx/proxy_params;
}
}
sie können dies sehr einfach tun, indem Sie Folgendes in Sudo vi /etc/nginx/sites-available/default
verwenden.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _ your_domain;
location /health {
access_log off;
return 200 "healthy\n";
}
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
Das hat bei mir funktioniert:
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Wenn es bei Ihnen nicht funktioniert, schauen Sie sich die Protokolle unter Sudo tail -f /var/log/nginx/error.log
An.