node.js - 使用 nginx 作为 Node 应用程序的反向代理的子域问题

标签 node.js nginx subdomain reverse-proxy

我是 nginx 的新手,我正在努力让我的反向代理配置正常工作。我有一个在 localhost:3010 上运行的 Node 应用程序,我正在尝试通过子域 dev.[sitename].org 上的这个应用程序通过 nginx 提供页面。为了便于阅读,我们只说 dev.example.org。以下是我在 sites-available 中创建的名为 example.org 的文件的内容(该文件的名称是否正确?):

server {
    server_name www.example.org example.org;
}

upstream app_dev.example.org {
    server 127.0.0.1:3010;
}

server {
    listen 0.0.0.0:80;
    server_name dev.example.org;
    access_log /var/log/nginx/dev.example.access.log;
    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://app_dev.example.org/;
            proxy_redirect off;
    }
}

这主要基于以下相关问题:Node.js + Nginx - What now?然而,当我尝试在我的浏览器中打开 dev.example.org 时,Chrome 报告它找不到该页面。我可以 ping dev.example.org 并获得一个 IP 地址,所以服务器似乎可用,但我的 nginx 配置不正确。我在 sites-enabled 中创建了符号链接(symbolic link)并重新启动了 nginx,以防你认为我可能忘记了这些步骤。

所以我现在的想法是我没有在某处正确引用子域,或者我在 sites-available 中的文件命名错误。任何朝着正确方向的插入都会受到赞赏。

最佳答案

为了确保问题出在 nginx 上,请尝试以下步骤:

在端口 3030 设置测试服务器,为系统 doc 文件夹或其他任何内容提供服务。

server {
    listen 3030
    location / {
     root /usr/share/doc/;
     autoindex on;
    }
}

upstream simple_test {
    server 127.0.0.1:3030
}

然后也使用下面的 simple_test:

proxy_pass http://simple_test/;

如果您在访问 dev.example.org 时看到 /usr/share/doc 目录列表,那么您的问题出在 Node 端。

关于node.js - 使用 nginx 作为 Node 应用程序的反向代理的子域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389994/

相关文章:

python - Flask Ansible 通过主管启动时出错

node.js - 如何将多个子域重定向到同一个正在运行的 Express 应用程序

heroku - 如何将自定义域指向 Heroku 子域?

ruby-on-rails - 处理带子域的 RoR 应用程序的建议

node.js - babel-register 不适用于后续的 require 语句

javascript - connect.bodyParser 不是函数

node.js - 如何在 keycloak 中验证 token 并获取用户详细信息?

nginx - 在多个服务器上使用 socketio 和 redis

javascript - Bluebird promise 本质上是阻塞的吗

nginx - kubernetes liveness探针重新启动以CrashLoopback结尾的Pod