У меня несколько приложений NodeJS, работающих на разных портах.
Мне нужно было, чтобы каждый из них работал через поддомен с использованием Nginx, например, вместо example.com:4001
пользователь может работать над app1.example.com
Я нашел два решения, которые кажутся подходящими, однако второе решение еще не работает, и даже если оно сработало, я не знаю, будет ли оно более безопасным, чем первое решение, или нет.
Стоит ли придерживаться Решения 1 или приложить больше усилий к Решению 2?
Решение 1 (Работает)
server {
listen 80;
server_name app1.example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:4001";
}
}
Решение 2 (еще не работает)
404 Not Found nginx
server {
listen 80;
server_name app1.example.com;
location = / {
proxy_pass http://127.0.0.1:4001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Операционная система: CentOS 6.9 (окончательная)
Nginx: 1.12.2
Пользовательский файл conf: /etc/nginx/conf.d/nodeapps.conf
Вам понадобится один server {}
блок для каждого поддомена, как описано в документации. http://nginx.org/en/docs/http/server_names.html
Например
server {
listen 80;
server_name app1.example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:4001";
}
}
server {
listen 80;
server_name app2.example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:4002";
}
}
Я также сильно Предлагаем использовать восходящий модуль для бэкэндов. http://nginx.org/en/docs/http/ngx_http_upstream_module.html