我的服务器有两个使用节点http-server运行的单页应用程序(使用框架):
website1 running on port 80: IP_ADDRESS:80
website2 running on port 8080: IP_ADDRESS:8080
目前,工作流程正在使用这两个命令来部署两个站点
pm2 start /usr/bin/http-server -f --name website1 -- -p 80 -d false
pm2 start /usr/bin/http-server -f --name website2 -- -p 8080 -d false
最后,我们的网站在域名上运行:
subdomain.mysite.com for website1
subdomain.mysite.com:8080 for website2.
这不是我们想要的,我们想这样:
subdomain.mysite.com for website1
subdomain2.mysite.com for website2
我尝试使用以下反向代理配置来安装nginx:
server {
listen 80;
server_name subdomain2.mysite.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
希望现在,如果我键入subdomain2.mysite.com,它会将我带到端口8080上的website2,但它没有,它将我带到端口80上的website1。事实上,我无法确定这个反向代理是否正常工作。
我确定我错误地配置了什么,可能是什么问题?
p / s:我也想知道我是否完全错误 - 如果我使用nginx进行反向代理,我应该直接停止使用http-server吗?
答案 0 :(得分:1)
Node和Nginx不能同时监听端口80。如果你想反向代理,你需要为第一个Node应用程序使用不同的端口,并为你的nginx文件添加另一个虚拟主机。
例如,将第一个应用程序的端口更改为8000将如下所示:
pm2 start /usr/bin/http-server -f --name website1 -- -p 8000 -d false
pm2 start /usr/bin/http-server -f --name website2 -- -p 8080 -d false
使用以下Nginx配置:
server {
listen 80;
server_name subdomain2.mysite.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
server {
listen 80;
server_name subdomain1.mysite.com;
location / {
proxy_pass http://127.0.0.1:8000;
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;
}
}
您可能还想为每个块添加proxy_redirect off;
标志。