![如何在一个 nginx 配置中设置两个 Node.js 应用程序](https://linux22.com/image/1304031/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%80%E4%B8%AA%20nginx%20%E9%85%8D%E7%BD%AE%E4%B8%AD%E8%AE%BE%E7%BD%AE%E4%B8%A4%E4%B8%AA%20Node.js%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
设想:
第一个 node.js 应用程序在 127.0.0.1:8888 上运行并提供只有一条路线‘domain.com/track.gif’
第二个 node.js 应用程序在 127.0.0.1:3000 上运行,它是第一个应用程序收集的统计信息的仪表板,可在“domain.com”上使用(以及其他路线,如“domain.com/login”或“domain.com/dashboard”等)
当我使用下面的配置时 - 仅适用于第一个应用程序,第一个应用程序运行良好,当我点击“domain.com/track.gif”时,它会提供这个跟踪 gif 文件:
upstream tracker {
server 127.0.0.1:8888;
}
server {
listen 0.0.0.0:80;
server_name www.domain.com domain.com;
access_log /var/log/nginx/domain_access.log;
error_log /var/log/nginx/domain_error.log;
location /track.gif {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://tracker;
proxy_redirect off;
}
}
如何向此配置添加另一个(第二个)node.js 应用程序来处理“domain.com/”或“domain.com/dashboard”或“domain.com/login”等路由的整个路由?
提前致谢!
答案1
添加第二个位置块。它将匹配除 /track.gif 之外的任何路径。
upstream tracker {
server 127.0.0.1:8888;
}
server {
listen 0.0.0.0:80;
server_name www.domain.com domain.com;
access_log /var/log/nginx/domain_access.log;
error_log /var/log/nginx/domain_error.log;
location /track.gif {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://tracker;
proxy_redirect off;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
}