Apache 和 Node 应用的 nginx 反向代理

Apache 和 Node 应用的 nginx 反向代理

我有一个 CentOS VPS,运行 Apache。以前我只是用它来托管一堆 PHP 和静态 HTML 网站,在不同的域名下,一切运行正常。

然后我开发了一个简单的 Node.js 应用程序。我将其发布到我的 VPS 上,只要在 IP 后面加上 :3000,就可以访问它。

我研究了如何使我的 Node 应用在新域名下可访问,同时保持 Apache 配置与原先类似。解决方案似乎是使用 Nginx 进行反向代理。

我最终想要的是:

  • 我所有的旧网站都是 PHP 和 HTML 应用程序,并且在 Apache 上运行,仍然可以通过 Apache(端口:8081)上的常用域进行访问
  • 我的 Node 应用程序(在端口 3000 上运行)只需通过其新域名即可访问,无需端口号

我目前拥有的:

nginx.conf

  user  asykes;

  error_log  /var/log/nginx/error.log warn;
  worker_rlimit_nofile 20480;

  events {
    worker_connections 5120; # increase for busier servers
    use epoll; # you should use epoll here for Linux kernels 2.6.x
  }


  http{
    include "/etc/nginx/sites-enabled/*";
  }

对于我的 Node 应用程序配置,sites-available/sentiment-sweep.conf (带有指向 site-enabled 的符号链接)

server {
  listen 80;
  server_name sentiment-sweep.com;

  location / {
      proxy_pass http://localhost:3000;
  }
}

目前的作用

我的服务器上的所有域名都解析到端口 3000 上的节点应用程序

我只需要http://sentiment-sweep.com/解析到 localhost:3000,其他的都转到 revisionquizzes.co.uk:8081/ 上的 Apache 版本,然后http://computerscience.as93.net:8081/等等...

我花了几个小时研究 nginx 配置,为 Apache 端口添加了 server{location{}},但似乎毫无进展。我最接近的一次是它呈现 Apache Sorry 页面时。

任何建议或帮助都将不胜感激,提前致谢

答案1

您必须指定代理的位置。假设您的域名是http://example.com

访问它们时,请查看下面的 URL 路由。

http://example.com --> http://localhost:3000
http://example.com/revisionquizzes --> revisionquizzes.co.uk:8081
http://example.com/computerscience  --> http://computerscience.as93.net:8081

仅为示例配置,只需在 nginx 配置中定义位置:

server {
  listen 80;
  server_name default_server;

  location / {
      proxy_pass http://localhost:3000;
  }

  location /revisionquizzes {
      proxy_pass revisionquizzes.co.uk:8081;
  }

  location /computerscience {
      proxy_pass http://computerscience.as93.net:8081;
  }

}

相关内容