【问题标题】:node.js with nginx, how to remove direct ip:port accessnode.js 与 nginx,如何删除直接 ip:port 访问
【发布时间】:2023-04-07 14:05:02
【问题描述】:

我继承了一个 node.js 项目,我对平台/语言非常陌生。

我继承的应用程序正在开发中,因此它正在进行中。在当前状态下,它在端口 7576 上运行,因此您可以通过以下方式访问它:server_ip:7576

我的任务是把这个“原型”放在实时服务器上,这样我的老板就可以把它展示给投资者等。但我必须用密码保护它。

所以我所做的就是让它在实时服务器上运行。然后我让它使用这样的 nginx 虚拟主机:

server {
        listen 80;

    auth_basic            "Restricted";
    auth_basic_user_file  /usr/ssl/htpasswd;

        access_log   /etc/nginx/logs/access/wip.mydomain.com.access.log;
        error_log  /etc/nginx/logs/error/wip.mydomain.com.error.log;
        server_name  wip.mydomain.com;

        location / { 
            proxy_pass http://127.0.0.1:7576;
            root         /var/app;
            expires 30d; 
            #uncomment this is you want to name an index file: 
            #index index.php index.html;
            access_log off; 
        }

        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
            root         /var/app/public;
        }
}

`

任务完成,我现在可以通过 wip.mydomain.com 访问我的应用程序

我可以通过 nginx 轻松地对其进行密码保护。

我的问题是应用程序仍然可以通过 ip:port 访问,但我不知道如何防止这种情况。

感谢任何帮助。

谢谢

【问题讨论】:

  • 这取决于:如果 nginx 位于节点服务器本地的同一个盒子上,您可以将节点更改为仅侦听 localhost/127.0.0.1。如果它们位于不同的服务器上,则需要在网络层(例如防火墙等)解决此问题。 (防火墙方法也适用于第一种情况,仅供参考。)
  • nginx 位于节点服务器本地的同一个盒子上。我的节点应用程序已经在监听 localhost 的 7576 端口。你的意思是我应该让它监听 80 端口吗?如果我误解了,对不起
  • 如果它可以从盒子外面到达,那么它正在监听 0.0.0.0(所有接口)。您需要更改侦听器的站立位置,以明确仅在 127.0.0.1 上侦听。
  • 嗯...太奇怪了。我很确定它不是在听 0.0.0.0,我发誓它已经在听 localhost/127.0.0.1。无论如何,我问了另一个知道很多的人,他建议我添加一些 iptable 规则。我添加了: iptables -A INPUT -p tcp --dport 7576 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 7576 -j DROP 就成功了
  • 如果第二条规则“有效”,则意味着它正在侦听的不仅仅是 127.0.0.1。 netstat -anp 对您的流程有何影响?

标签: node.js nginx port


【解决方案1】:

在您的节点javascript代码中,您需要显式绑定到环回IP:

server.listen(7576, '127.0.0.1');

(您正在寻找对.listen(<port>) 的调用来修复。该变量可能被称为app 或其他名称)。

任何以127.开头的IP地址都是环回地址,只能在单台机器内访问(实际上不使用网络)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2019-12-01
    • 2013-10-13
    • 1970-01-01
    • 2016-12-10
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多