V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
bfqymmt
V2EX  ›  NGINX

nginx 使用时的疑问

  •  
  •   bfqymmt · Aug 22, 2019 · 4005 views
    This topic created in 2453 days ago, the information mentioned may be changed or developed.
    防火墙 80 端口->内网的 nginx 服务器上->反向代理到内网的其他服务器站点

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

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

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

    你这个需求简直匪夷所思
    enng
        2
    enng  
       Aug 22, 2019
    @matsuz #1 楼主的意思似乎是不想外网访问 只允许内网
    enng
        3
    enng  
       Aug 22, 2019
    比如说
    allow 192.168.0.0 ;
    deny all ;
    只允许内网 ip 地址段,或者 iptables ?
    arrow8899
        4
    arrow8899  
       Aug 22, 2019
    你怎么禁止的,理论上禁止外网不会影响内网访问啊
    godoway
        5
    godoway  
       Aug 22, 2019 via Android
    只允许内网访问可以在 Nginx 限制一下仅内网 IP 吧。
    matsuz
        6
    matsuz  
       Aug 22, 2019
    如果 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  
       Aug 22, 2019
    所以你的需求到底是个啥?用域名访问内网的服务器?
    Vegetable
        8
    Vegetable  
       Aug 22, 2019
    你不希望的你网站被外网访问(a)还是不希望服务器可以访问外网(b)?

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

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

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

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

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

    就此结贴,谢谢各位的帮助。
    xuanbg
        14
    xuanbg  
       Aug 22, 2019
    @qwerthhusn 能知道是什么问题的,基本上都能自己解决了。所以你看大量的问题都是没什么价值的傻问题,其中大部分问题都不知道是在问什么。。。然后,社区里面经常帮别人解决问题的人,基本上从来都不提问题。
    xhcnb
        15
    xhcnb  
       Aug 22, 2019
    我先猜测一下,楼主你遇到的问题可能是这样的
    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  
       Aug 22, 2019
    楼主既然清楚了, 请忽略我的回复
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3034 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 07:56 · PVG 15:56 · LAX 00:56 · JFK 03:56
    ♥ Do have faith in what you're doing.