使用nginx禁止通过服务器IP地址直接访问业务的进一步配置(nginx隐藏青龙面板地址)

背景:在阿里云的ECS服务器上使用docker安装了一个青龙面板容器,使用本机的5700端口。域名abc.top可解析到我ECS的IP地址。

需求:通过域名abc.top可直接访问青龙面板,但是禁止使用IP访问。

网上大概有两个推荐的方法:nginx和iptable。以下我使用nginx。

server {
    listen 5700;     # 监听5700端口
    server_name abc.top;    # 设置虚拟主机服务名称为 abc.top
    location / {
        if ($host != "abc.top") {
            return 403;    # 检查 $host 变量的值,如果不是使用域名 "abc.top"访问,则返回403。
        }
    }
}

但是其实这样设置会有一个端口抢占的问题。因为我的docker ql 已经占用了5700端口,而nginx监听这个端口的前提是要占用它,这就产生了矛盾。结果就是要么nginx修改配置后无法重启,要么就是docker ql无法重启。

解决方案:

解决方法十分简单,让nginx换一个监听端口就行。

server {
    listen 5000;    # 改为监听5000端口
    server_name abc.top;
    location / {
        if ($host != "abc.top") {
            return 403;
        }
    proxy_pass http://localhost:5700;    # 当if条件没有匹配成功,说明访问被允许,将流量转向本机的5700端口即可。
    }
}

只需要再开一个闲置端口,通过内网将访问5700上的端口交由5000端口代理,就可避免上述问题。

这样在防火墙和阿里云安全组上,只需要放通5000端口,不需要放通5700端口,同时避免了重要业务的端口直接暴露。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHOITAKWAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值