【问题标题】:node.JS / Django - configure Apache / NGINX to run from locationnode.JS / Django - 配置 Apache / NGINX 从位置运行
【发布时间】:2021-05-01 00:54:19
【问题描述】:

我使用 Apache 作为我的前端 VPS / NGINX 作为 node.js / django 应用程序的后端 VPS 与 react.js 前端。

我正在尝试从同一个 VPS 但从不同位置运行我的应用程序: 例如:

https://myapps/app1
https://myappps/app2

之前我已经通过在应用程序的路由器中添加位置来解决这个问题 - 但是我不确定这是否是最好的方法。我真的可以在 NGINX 或 Apache 的 VPS 配置中添加位置吗?

# nginx.default

server {
    listen 8020;
    server_name example.org;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        root /opt/app/client/build/;
    }
}

【问题讨论】:

    标签: node.js django apache nginx


    【解决方案1】:

    如果您正在运行两个节点应用程序,则可以使用此 NGINX 配置来完成。只需确保 app1 和 app2 位于不同的端口即可。

    server {
            listen 80;
    
            server_name localhost;
    
            location /app1 {
                proxy_pass http://127.0.0.1:5000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
            }
    
            location /app2{
                proxy_pass http://127.0.0.1:5001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
            }
        }
    

    编辑:这就是我运行多个站点的方式 *注意:服务器名称应设置为域,但如果您无权访问域,请将它们设置为 IP:PORT,如下例所示!服务器名称不能是本地的原因是它需要公开才能访问。在我的网站 1 server_name 是 website1.com 的用例中,网站 2 server_name 是 website2.com(我的域)

    server {
            listen 5000;
            //APP 1
            server_name 10.0.0.1:5000;
    
            location /{
                proxy_pass http://127.0.0.1:5000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
            }
        }
        
        server {
            listen 5001;
            //APP 2
            server_name 10.0.0.1:5001;
    
            location /{
                proxy_pass http://127.0.0.1:5001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
            }
        }
    

    【讨论】:

    • 这适用于我的登录页面:http://localhost:8020/npt/#/,但如果我提出另一个请求 http://localhost:8020/users/signin,它将找不到该位置。我认为请求应该是http://localhost:8020/npt/users/signin。如何在不添加应用路由器位置的情况下做到这一点?
    • 如果您尝试运行多个站点,可以在服务器名称中完成,请在上面编辑我的答案。
    • 感谢您的回答!但现在,我想我错过了 URL 请求中的位置?这就是我想要实现的目标:http://localhost:8020/npt/#/users/signinhttp://localhost:5000/#/users/signin
    • 该位置将在该端口的根目录IP:8020/users/signin
    • 你是否让它与这个解决方案一起工作? @AlexBran
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2017-03-25
    • 2011-09-03
    • 1970-01-01
    • 2017-01-10
    • 2023-03-18
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多