Я использую стек LEMP и Node JS на моем сервере debian. Nginx работает на порту 80 и Node JS на 8080. Я создал новый субдомен: cdn.domain.com для приложения nodejs. В настоящее время я могу получить доступ к приложению Node JS только как cdn.domain.com:8080/. Я хочу настроить Nginx так, чтобы, когда я вхожу в cdn.domain.com, я могу заставить приложение работать с портом 80. Я думаю, что это можно сделать, используя nginx вверх по течению. Но я не могу понять, как это сделать.
Порт пересылки от 80 до 8080 с использованием NGINX
Ответ 1
NGINX поддерживает WebSockets, позволяя настраивать туннель между клиентом и серверным сервером. Для того, чтобы NGINX отправил запрос обновления с клиента на серверный сервер, заголовки обновления и подключения должны быть явно указаны. Например:
# 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;
}
}
Источник: http://nginx.com/blog/websocket-nginx/
Ответ 2
Так просто, как это,
не забудьте сменить example.com на свой домен (или IP-адрес), а 8080 - на порт приложения Node.js:
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";
}
}
Источник: https://eladnava.com/binding-nodejs-port-80-using-nginx/
Ответ 3
Вот как вы можете это достичь.
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;
}
}
Вы также можете использовать эту конфигурацию для загрузки баланса между несколькими процессами Node следующим образом:
upstream {
nodeapp 127.0.0.1:8081;
nodeapp 127.0.0.1:8082;
nodeapp 127.0.0.1:8083;
}
Где вы используете сервер Node на портах 8081, 8082 и 8083 в отдельных процессах. Nginx легко загрузит баланс вашего трафика среди этих серверных процессов.
Ответ 4
Простой:
server {
listen 80;
server_name p3000;
location / {
proxy_pass http://0.0.0.0:3000;
include /etc/nginx/proxy_params;
}
}
Ответ 5
Вы можете определить восходящий поток и использовать его в proxy_pass
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
}
Ответ 6
Вы можете сделать это очень просто, используя следующую sudo vi/etc/nginx/sites-available/default
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;
}
}
Ответ 7
Это сработало для меня:
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;
}
}
Если это не работает, посмотрите журналы на sudo tail -f/var/log/nginx/error.log
Ответ 8
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";
} }
Ответ 9
Вы можете использовать Kong API-шлюз. Конг API-интерфейс построен поверх NGINX. Он предоставляет API, который делает обратный прокси-сервер. Вы можете указать свой URL вверх по течению. Он также предоставляет различные полезные плагины, такие как:
- oAuth2
- JWT
- аутентификация
- Аутентификация HMAC
- Аутентификация LDAP
- Ограничение IP
- CORS
- ACL
- Динамический SSL
- Обнаружение ботов
- Ограничение скорости
- Ограничение скорости ответа
- Ограничение размера запроса
- Завершение запроса
- Запрос трансформатора
- Трансформатор отклика
- Идентификатор корреляции
- Вход