• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ggp1ot2
V2EX  ›  程序员

为啥我做了 nginx 反向代理,还是能通过 ip 直接访问?

  •  
  •   ggp1ot2 · Jan 23, 2023 · 6200 views
    This topic created in 1380 days ago, the information mentioned may be changed or developed.

    我有一个服务器,我在上面部了几个 docker 容器,有一个容器是 web 服务。

    这样就可以通过 ip:端口访问这个 web 页面了。

    为了绑定我的域名,我又搜了一堆教程,通过 nginx 做了反向代理。

    实现了直接访问我的域名,就能来到这个服务器的端口,来访问我的 web 服务。

    然后又申请了一个免费的 https 证书,现在直接输入域名就是 https 的了。还把鼓捣 nginx 的配置文件,把 http 的访问直接跳转到 https 。

    本来工作的好好的,结果今天突然发现,我现在直接输入 ip:端口,不能访问。

    但是如果直接输入 ip ,就直接跳转到了我这个 web 页面,还提示不安全,没证书。

    虽然我整套流程是这里搜一点那里搜一点实现的,但是我记得没有哪一步是说直接访问 ip 就跳转到这个服务?

    为啥会这样,我搞域名就是不想让别人直接看到我的 ip ,结果这搞了一通,别人直接访问域名就是我这个 web 页面了,有点难过,本来还觉得学了很多命令,,。,,

    19 replies  •  2023-01-24 22:09:12 +08:00
    momocraft
    momocraft
    Jan 23, 2023
    1
    因为你没有做任何让 ip 无法访问的事

    难过不如用脑思考一下 怎样继续达到你想要的效果
    seers
    seers
    Jan 23, 2023 via Android
    2
    Nginx 的 servername 没配置好
    ggp1ot2
    ggp1ot2
    OP
    Jan 23, 2023
    3
    @momocraft #1 谢谢,我好奇的是,明明我开的端口,就算能访问,也应该是 ip+端口访问到我的服务。我不明白的是,为什么现在直接 ip 就能访问了。进一步的操作应该是设置某个参数,让 ip 访问禁用?
    SenLief
    SenLief
    Jan 23, 2023 via iPhone
    4
    你如果不用 nginx ,默认的访问服务就是 ip 。

    可以用 nginx 屏蔽掉 ip 访问,搜一下应该有的,访问返回 444
    Smilencer
    Smilencer
    Jan 23, 2023 via iPhone
    5
    @ggp1ot2 http 默认 80 端口,https 443
    MrKrabs
    MrKrabs
    Jan 23, 2023
    6
    设置文件不发上来?
    lsdxl
    lsdxl
    Jan 23, 2023❤️1
    7
    搞域名 不影响想看你 ip 人找到你 ip 啊
    juggtt213
    juggtt213
    Jan 23, 2023 via Android❤️1
    8
    是不是因为你的云服务厂商默认设置了防火墙规则,所以你用二级域名可以通过 Nginx 反代,但是 ip+域名就访问不了。然后用 ip 访问走 http ,所以自然匹配不到你的绑定 https 的规则。然后走了 /config/enable-sites 里 default 配置文件的默认规则
    cpstar
    cpstar
    Jan 23, 2023
    9
    server_name _;
    return 403;
    cccn
    cccn
    Jan 23, 2023
    10
    开启防火墙,开闭端口。
    BluceW
    BluceW
    Jan 23, 2023
    11
    可以直接让你的容器只监听 127.0.0.1 , 然后 nginx 也反代 127.0.0.1:你的端口
    linkbg
    linkbg
    Jan 23, 2023 via Android
    12
    docker 监听本地,不要用 0.0.0.0
    momocraft
    momocraft
    Jan 24, 2023
    14
    不要在公网 IP listen, 可以用一个只有 nginx 能访问到的 IP
    这个 IP 怎么获得视乎你 nginx 怎么跑的
    nginx 也在 docker 跑吗?
    MEIerer
    MEIerer
    Jan 24, 2023
    15
    @momocraft #1 哈哈哈真实了
    fengpan567
    fengpan567
    Jan 24, 2023
    16
    docker 和 Nginx 都部署在同一台服务器的话,容器只监听本机 ip 可以达到你要的效果,但是这样也不安全。
    docker run -d -p 127.0.0.1:hostPort:containerPort image
    realpg
    realpg
    Jan 24, 2023
    17
    门口立了个老王家的门牌不能拦住不看门牌推门就进的人
    lff0305
    lff0305
    Jan 24, 2023 via Android
    18
    在一个 docker network 中启动 Web 和 Nginx 。Web 服务不要暴露容器内端口到 host 机器,
    Nginx 需要 暴露端口。同时 Nginx 使用 Web 的容器内私有 IP 配置转发

    或者就用 docker compose, 比较省事
    Posuker
    Posuker
    Jan 24, 2023
    19
    应该是没有配默认请求,所以走 ip 还是能访问到站点。
    在 nginx 配置里加一个 default 的配置,抛出个 403 / 404 之类的错误,就不能直接通过 ip 访问了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4974 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 06:16 · PVG 14:16 · LAX 22:16 · JFK 01:16
    ♥ Do have faith in what you're doing.