V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
bfqymmt
V2EX  ›  NGINX

nginx 使用时的疑问

  •  
  •   bfqymmt · 2019-08-22 15:02:51 +08:00 · 3318 次点击
    这是一个创建于 1953 天前的主题,其中的信息可能已经有所发展或是发生改变。
    防火墙 80 端口->内网的 nginx 服务器上->反向代理到内网的其他服务器站点

    现在遇到的问题的是:
    安装有 nginx 的服务器如果禁止外网,所有的站点都不能访问。把 nginx 服务器的外网打开,则可以访问站点。

    我的需求:
    nginx 不想开放外网权限,这样可以实现吗?
    第 1 条附言  ·  2019-08-22 15:52:51 +08:00
    各位老师,看了你们的回复,我明白了,是我思考方向错了。
    nginx 保护的是不能连接外网的内部服务器,而不是 nginx 本身服务器。

    就此结贴,谢谢各位的帮助。
    16 条回复    2019-08-22 16:21:14 +08:00
    matsuz
        1
    matsuz  
       2019-08-22 15:09:04 +08:00
    所以你是想不让你的服务器接入公网, 但是又想让公网上的用户能访问你的 NGINX 的站点 ???

    你这个需求简直匪夷所思
    enng
        2
    enng  
       2019-08-22 15:12:19 +08:00
    @matsuz #1 楼主的意思似乎是不想外网访问 只允许内网
    enng
        3
    enng  
       2019-08-22 15:14:23 +08:00
    比如说
    allow 192.168.0.0 ;
    deny all ;
    只允许内网 ip 地址段,或者 iptables ?
    arrow8899
        4
    arrow8899  
       2019-08-22 15:14:58 +08:00
    你怎么禁止的,理论上禁止外网不会影响内网访问啊
    godoway
        5
    godoway  
       2019-08-22 15:15:30 +08:00 via Android
    只允许内网访问可以在 Nginx 限制一下仅内网 IP 吧。
    matsuz
        6
    matsuz  
       2019-08-22 15:24:27 +08:00
    如果 NGINX 有装了 http_access 模块的话向 #3 那位老兄说的那样, 在 server 段里面

    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    allow 192.168.0.0/16;
    deny all;

    或者通用的, 用 iptables 限制只允许上面这三种内网 IP 段访问就行了
    maichael
        7
    maichael  
       2019-08-22 15:26:22 +08:00
    所以你的需求到底是个啥?用域名访问内网的服务器?
    Vegetable
        8
    Vegetable  
       2019-08-22 15:33:30 +08:00
    你不希望的你网站被外网访问(a)还是不希望服务器可以访问外网(b)?

    感觉上边都在说 a,但 a 很简单内网白名单就好了,难道是 1 楼说的这个 b 情况?

    这样有一点麻烦,因为 http 不是单向的,nginx 必须能和外部 ip 建立 http 链接.所以不能限制 nginx 这个进程.
    GoLand
        9
    GoLand  
       2019-08-22 15:35:26 +08:00
    allow / deny 就可以了
    qwerthhusn
        10
    qwerthhusn  
       2019-08-22 15:39:49 +08:00
    我感觉很多 V 友提问题,说的不清不楚。。。看了半天没明白个意思
    momocraft
        11
    momocraft  
       2019-08-22 15:42:08 +08:00
    > #10

    正常
    能正确描述问题的人更有可能自己解决问题
    imdong
        12
    imdong  
       2019-08-22 15:42:42 +08:00
    我猜,是 Nginx 是对内使用的。
    所以不想对外暴露 Nginx。

    这个问题嘛,关掉外网访问,解析到内网 IP 即可。

    如果内网不互通,那就楼上的 IP 白名单吧。
    bfqymmt
        13
    bfqymmt  
    OP
       2019-08-22 15:52:27 +08:00
    各位老师,看了你们的回复,我明白了,是我思考方向错了。
    nginx 保护的是不能连接外网的内部服务器,而不是 nginx 本身服务器。

    就此结贴,谢谢各位的帮助。
    xuanbg
        14
    xuanbg  
       2019-08-22 15:59:41 +08:00
    @qwerthhusn 能知道是什么问题的,基本上都能自己解决了。所以你看大量的问题都是没什么价值的傻问题,其中大部分问题都不知道是在问什么。。。然后,社区里面经常帮别人解决问题的人,基本上从来都不提问题。
    xhcnb
        15
    xhcnb  
       2019-08-22 16:20:09 +08:00
    我先猜测一下,楼主你遇到的问题可能是这样的
    Internet -> Rrouter -> Nginx -> Server
    你现在想让 nginx 只能访问 Router 和 Server 对吧? 然后发现设置成这样以后, 外部 Internet 进来的流量也无法访问 nginx 了
    如果是这样的情况, 引起的原因是 router 在 80 端口进行转发给 nginx 时实际上时把公网流量进行了转发, 没有修改 ip 包的源地址, 相当于是 nginx 直接收到了外网的包, 这样 nginx 返回数据包时也要返回给外网, 就不通了
    我这里有 ubnt 的路由器可以这样设置防火墙
    local ALL allow 内网允许
    internet IN allow 公网 入 允许
    internet ESTABLISHED allow 公网 已连接 允许
    internet OUT deny 公网 出 禁止
    可以参考设置一下, 或者设置 router 转发 80 端口流量的方式, 改为由 router 代理的方式
    xhcnb
        16
    xhcnb  
       2019-08-22 16:21:14 +08:00
    楼主既然清楚了, 请忽略我的回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1054 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:39 · PVG 06:39 · LAX 14:39 · JFK 17:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.