У меня есть личный домен, работающий на VPS. Я хотел бы настроить nginx как обратный прокси для приложения node.js, но он не работает. Может ли кто-нибудь взглянуть на мою конфигурацию и сказать, что я делаю не так?
Предположим, мое доменное имя - example.com. По сути, я хотел бы сделать так, чтобы, когда я перехожу на node.example.com, он проксировался на приложение node.js. У меня также есть настройки blog.example.com и www.example.com в nginx.
Вот моя конфигурация nginx для обратного прокси (blog.example.com, настройка www.example.com опущена):
server { listen 80; server_name node.example.com; access_log /srv/www/example.com/logs/node-access.log; error_log /srv/www/example.com/logs/node-error.log; location / { proxy_pass http://example.com:3000/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; } }
И вот мое приложение node.js:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(3000, "example.com");
Я перезапустил сервер nginx и запустил приложение node.js. Но если я захожу на node.example.com, он говорит: «node.example.com не существует или недоступен».
Я не уверен, что не так с моей конфигурацией. Я также пробовал различные комбинации.
Вот конфигурации, которые я пробовал:
proxy_pass in nginx | hostname in node.js app http:// localhost:3000/ | ---.listen(3000, "localhost") http:// 127.0.0.1:3000/ | ---.listen(3000, "127.0.0.1") http:// node.example.com:3000/ | ---.listen(3000, "node.example.com")
Я также пробовал следующую конфигурацию nginx:
upstream nodeapp { server 127.0.0.1:3000; } server { ... location / { proxy_pass http:// nodeapp; ... } ... }
И это не так ' т тоже работать. Что я делаю неправильно? Я искал в Интернете несколько часов и пробовал различные подходы, но все они, похоже, не работают.
Буду очень признателен, если кто-нибудь может мне помочь.
Спасибо!