У меня есть личный домен, работающий на 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;
...
}
...
}
И это тоже не работает. Что я делаю неправильно? Я искал в Интернете несколько часов и пробовал разные подходы, но все они, похоже, не работают.
Буду очень признателен, если кто-нибудь сможет мне помочь.
Спасибо!