让 Nginx 为节点应用程序提供多个虚拟服务器
Getting Nginx to serve more than one virtual server for node apps
所以,我现在过得很艰难。我有两个 nodejs 应用程序。一个是 运行 在端口 8080 上,一个是在 8081 上。它们都是 运行 在相同的 IP 地址上。我有两个域,domain1.com 和 domain2.com。我正在使用 Nginx 作为反向代理,将 domain1.com 重定向到端口 8080 并将 domain2.com 重定向到端口 8081。我目前的问题是 domain1.com 是唯一可行的。我只能通过转到 domain1.com:8081 或 domain2.com:8081.
来访问其他节点应用程序
我的nginx文件结构:
domain1.com.conf:
server {
listen 80;
server_name domain1.com www.domain1.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;
}
}
domain2.com.conf:
server {
listen 80;
server_name domain1.com www.domain1.com;
location / {
proxy_pass http://127.0.0.1:8081;
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;
}
}
nginx.conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
如有任何帮助,我们将不胜感激。这个问题我绞尽脑汁想了很久,网上也找不到很多相关的答案。
顺便说一句,我在 CentOS 6.3
上 运行 所有这些
更新: 在进行更多故障排除之后。我发现我的问题可能不是 nginx 的问题,因为我完全关闭了 nginx 服务,而我的节点应用程序仍在显示。这很奇怪,因为端口 80 上没有 运行。我什至使用 netstat 命令检查端口 80 上是否有任何东西 运行。我现在很困惑。如果有人对如何解决此问题或如何进一步排除故障有任何想法。请告诉我。
我不是 nginx 专家,但这种设置适合我:
upstream www.domain1.com {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name domain1.com,www.domain1.com;
location / {
proxy_pass http://www.domain1.com;
}
}
# same for domain2
我不知道这是如何工作的,也不知道为什么会这样,但重启我的服务器似乎解决了这个问题。我仍然不知道是什么原因造成的,但是我家的电源闪烁,我的服务器重新启动,并且一切正常,我必须启动配置。感谢任何试图提供帮助的人。我将 ShanShan 的答案标记为正确答案,因为 his/her 配置有效且工作正常。
所以,我现在过得很艰难。我有两个 nodejs 应用程序。一个是 运行 在端口 8080 上,一个是在 8081 上。它们都是 运行 在相同的 IP 地址上。我有两个域,domain1.com 和 domain2.com。我正在使用 Nginx 作为反向代理,将 domain1.com 重定向到端口 8080 并将 domain2.com 重定向到端口 8081。我目前的问题是 domain1.com 是唯一可行的。我只能通过转到 domain1.com:8081 或 domain2.com:8081.
来访问其他节点应用程序我的nginx文件结构:
domain1.com.conf:
server {
listen 80;
server_name domain1.com www.domain1.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;
}
}
domain2.com.conf:
server {
listen 80;
server_name domain1.com www.domain1.com;
location / {
proxy_pass http://127.0.0.1:8081;
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;
}
}
nginx.conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
如有任何帮助,我们将不胜感激。这个问题我绞尽脑汁想了很久,网上也找不到很多相关的答案。 顺便说一句,我在 CentOS 6.3
上 运行 所有这些更新: 在进行更多故障排除之后。我发现我的问题可能不是 nginx 的问题,因为我完全关闭了 nginx 服务,而我的节点应用程序仍在显示。这很奇怪,因为端口 80 上没有 运行。我什至使用 netstat 命令检查端口 80 上是否有任何东西 运行。我现在很困惑。如果有人对如何解决此问题或如何进一步排除故障有任何想法。请告诉我。
我不是 nginx 专家,但这种设置适合我:
upstream www.domain1.com {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name domain1.com,www.domain1.com;
location / {
proxy_pass http://www.domain1.com;
}
}
# same for domain2
我不知道这是如何工作的,也不知道为什么会这样,但重启我的服务器似乎解决了这个问题。我仍然不知道是什么原因造成的,但是我家的电源闪烁,我的服务器重新启动,并且一切正常,我必须启动配置。感谢任何试图提供帮助的人。我将 ShanShan 的答案标记为正确答案,因为 his/her 配置有效且工作正常。