Nginx

用於 Apache 和 Node 應用程序的 nginx 反向代理

  • March 21, 2016

我有一個 CentOS VPS,執行 Apache。以前我只是用它來託管一堆 PHP 和靜態 HTML 網站,在不同的域下,一切正常。

然後我開發了一個簡單的 Node.js 應用程序。我在我的 VPS 上發布了它,如果我在我的 IP 後面加上 :3000,它就可以訪問。

我對如何使我的 Node 應用程序可以在它的新域名下訪問,同時保持 Apache 配置與其類似的方式進行了一些研究。解決方案似乎是使用 Nginx 進行反向代理。

最終我想要的是:

  • 我所有的舊網站都是 PHP 和 HTML 應用程序,並且在 Apache 上執行,仍然可以在 Apache 上的常用域下訪問(埠:8081)
  • 我的節點應用程序(在埠: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(帶有指向啟用站點的符號連結)

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/ 和http://computerscience.as93.net:8081上轉到他們的 Apache 版本/等等…

我花了幾個小時玩 nginx 配置,為 Apache 埠添加 server{location{}},但似乎無處可去。我得到的最接近的是當它呈現 Apache 抱歉頁面時。

任何建議或幫助將不勝感激,在此先感謝

您必須指定代理的位置。假設您的域名是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;
 }

}

引用自:https://serverfault.com/questions/763305