我正在尝试在我的 VPS 上托管 4 个 NodeJS 进程。其中两个是必须可以通过其名称在浏览器中访问的网站,我们将它们称为a.com
和b.com
。a.com
在端口 3000 上运行,并b.com
在端口 4000 上运行。另一个是在端口 7000 上运行但没有指向它的域名的网站,因此我想使用 VPS 的 IP 地址和端口来访问它,例如0.1.2.3:7000
。最后一个是在端口 7500 上运行的 SocketIO 进程,也应该可以通过其地址访问:0.1.2.3:7500
,但我猜它的配置应该与在 7000 上运行的配置类似,所以我们暂时忘掉它。
我认为我应该使用 Nginx 来执行此操作,但我无法配置它以使其工作。到目前为止,我已经设法使它a.com
正常b.com
工作,但我无法访问0.1.2.3:7000
。到目前为止,我所做的是创建a.com
和(在端口 7000 上运行的)配置文件,b.com
并在 中为它们创建符号链接。c
/etc/nginx/sites-available/
/etc/nginx/sites-enabled
a.com
server {
listen 80;
server_name www.a.com a.com
access_log /var/log/nginx/a.com.access.log;
rewrite_log on;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
百科
server {
listen 80;
server_name www.b.com b.com;
access_log /var/log/nginx/b.com.access.log;
rewrite_log on;
location / {
proxy_pass http://127.0.0.1:4000;
}
}
C
server {
listen 7000;
server_name _;
access_log /var/log/nginx/c.access.log;
location / {
proxy_pass http://127.0.0.1:7000;
}
}
就像我说的,我已经可以通过在浏览器的地址栏中输入其域名来访问a.com
和b.com
。如何配置它才能c
通过 访问0.1.2.3:7000
?
答案1
您的 C 配置包含与 7000 端口相冲突的绑定。这就是您无法使其工作的原因。我猜想某些东西已经绑定到 7000 端口,因为您正在那里代理请求。