Nginx
用於 Apache 和 Node 應用程序的 nginx 反向代理
我有一個 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; } }