gpt4 book ai didi

node.js - 为什么我不能在 apache 中阻止单个 node.js 文件?

转载 作者:搜寻专家 更新时间:2023-10-31 22:31:00 24 4
gpt4 key购买 nike

我有一个 apache 服务器,除了我的应用程序之外,我还有一个 node.js websocket 应用程序。问题是任何人都可以通过在 URL 中导航到它来读取文件内容。我正在尝试阻止直接访问其中一个文件(我已经设法阻止了 node.js 文件夹)。

我正在修改我的配置文件:apache2/apache2.conf。假设我的文件在 /var/www/server/node_start.js 中,我尝试执行以下操作:

<Files /var/www/server/node_start.js>
Order allow,deny
Deny from all
</Files>

<FilesMatch /var/www/server/node_start.js>
Order allow,deny
Deny from all
</FilesMatch>

<Files /server/node_start.js>
Order allow,deny
Deny from all
</Files>

<FilesMatch /server/node_start.js>
Order allow,deny
Deny from all
</FilesMatch>

这些都没有成功。我看过其他帖子,看起来我和其他人在做同样的事情。知道我失败的原因吗?

附言我不能阻止整个目录,因为还有很多不应该被阻止的其他文件。

最佳答案

您使用错误的方法来处理 node.js 和 apache 服务器。使用 node.js 的方法如下:

  1. Node.js 提供服务器和客户端。因此,您需要创建服务器以使用 node.js 运行
  2. 我使用 express 在带有端口的 node.js 中创建服务器。如果你打算使用 express 那么不要忘记在 app.js 中添加 app.enable('trust proxy');
  3. 创建服务器后,它需要从 node.js.Ex 开始:- node sever.jsnode app.js
  4. 您可以使用http://localhost:{port}/

    访问 Node 服务器
  5. 您可以使用 forever 或 nodemon 来运行 Node 服务器。有关更多信息,请查看链接 NodemonForever

  6. 您可以在任何路径(包括 www.如果您将应用程序放在 www 目录之外。

  7. 确保 node.js 应用程序目录必须具有 apache 或 ngnix 的适当所有权和权限。在授予所有权之前,请检查名称或 apache 或 ngnix 用户。

  8. 对于用户所有权 例如:chown -R www:data www:data {/path_to_node_applicatoin}

  9. 写入权限 例如:chmod -R 775 {/path_to_node_applicatoin}

  10. 启动服务器后,您需要在 apache 和 nginx 服务器中使用代理来全局访问您的站点。

  11. 如果您打算通过 node.js 使用 websocket,则需要 http 版本 1.1。例如:proxy_http_version 1.1;;
  12. 配置apache服务器支持node.js服务器如下:

    <VirtualHost *:80>
    ServerAdmin nodeadmin@example.com
    ServerName example.com
    ServerAlias www.example.com

    ProxyRequests off

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    <Location />
    ProxyPass http://127.0.0.1:3000/ #use the port which you specified for node application.
    ProxyPassReverse http://127.0.0.1:3000/
    </Location>
    </VirtualHost>
  13. 配置ngnix支持node.js如下:

         server {
    listen 80;
    server_name example.com;
    root /var/www/stack/nodejsapp;
    index index.html index.htm;
    location / {
    rewrite ^/socket/(.*) /$1 break;
    proxy_pass http://127.0.0.1:3000; #use the port which you specified for node application.
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    }
    }

注意:确保您已在 apache 和 ngnix 中启用代理支持。

关于node.js - 为什么我不能在 apache 中阻止单个 node.js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com