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

2023-01-23 19:38:18 +08:00
 ggp1ot2

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

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

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

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

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

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

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

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

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

4700 次点击
所在节点    程序员
19 条回复
momocraft
2023-01-23 19:48:47 +08:00
因为你没有做任何让 ip 无法访问的事

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

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

或者就用 docker compose, 比较省事
Posuker
2023-01-24 22:09:12 +08:00
应该是没有配默认请求,所以走 ip 还是能访问到站点。
在 nginx 配置里加一个 default 的配置,抛出个 403 / 404 之类的错误,就不能直接通过 ip 访问了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX