我有一个服务器,我在上面部了几个 docker 容器,有一个容器是 web 服务。
这样就可以通过 ip:端口访问这个 web 页面了。
为了绑定我的域名,我又搜了一堆教程,通过 nginx 做了反向代理。
实现了直接访问我的域名,就能来到这个服务器的端口,来访问我的 web 服务。
然后又申请了一个免费的 https 证书,现在直接输入域名就是 https 的了。还把鼓捣 nginx 的配置文件,把 http 的访问直接跳转到 https 。
本来工作的好好的,结果今天突然发现,我现在直接输入 ip:端口,不能访问。
但是如果直接输入 ip ,就直接跳转到了我这个 web 页面,还提示不安全,没证书。
虽然我整套流程是这里搜一点那里搜一点实现的,但是我记得没有哪一步是说直接访问 ip 就跳转到这个服务?
为啥会这样,我搞域名就是不想让别人直接看到我的 ip ,结果这搞了一通,别人直接访问域名就是我这个 web 页面了,有点难过,本来还觉得学了很多命令,,。,,
1
momocraft 2023-01-23 19:48:47 +08:00
因为你没有做任何让 ip 无法访问的事
难过不如用脑思考一下 怎样继续达到你想要的效果 |
2
seers 2023-01-23 19:48:59 +08:00 via Android
Nginx 的 servername 没配置好
|
3
ggp1ot2 OP @momocraft #1 谢谢,我好奇的是,明明我开的端口,就算能访问,也应该是 ip+端口访问到我的服务。我不明白的是,为什么现在直接 ip 就能访问了。进一步的操作应该是设置某个参数,让 ip 访问禁用?
|
4
SenLief 2023-01-23 19:51:36 +08:00 via iPhone
你如果不用 nginx ,默认的访问服务就是 ip 。
可以用 nginx 屏蔽掉 ip 访问,搜一下应该有的,访问返回 444 |
6
MrKrabs 2023-01-23 19:59:33 +08:00
设置文件不发上来?
|
7
lsdxl 2023-01-23 20:01:40 +08:00 1
搞域名 不影响想看你 ip 人找到你 ip 啊
|
8
juggtt213 2023-01-23 20:03:28 +08:00 via Android 1
是不是因为你的云服务厂商默认设置了防火墙规则,所以你用二级域名可以通过 Nginx 反代,但是 ip+域名就访问不了。然后用 ip 访问走 http ,所以自然匹配不到你的绑定 https 的规则。然后走了 /config/enable-sites 里 default 配置文件的默认规则
|
9
cpstar 2023-01-23 21:20:22 +08:00
server_name _;
return 403; |
10
cccn 2023-01-23 22:19:50 +08:00
开启防火墙,开闭端口。
|
11
BluceW 2023-01-23 23:16:19 +08:00
可以直接让你的容器只监听 127.0.0.1 , 然后 nginx 也反代 127.0.0.1:你的端口
|
12
linkbg 2023-01-23 23:28:14 +08:00 via Android
docker 监听本地,不要用 0.0.0.0
|
13
h0099 2023-01-24 00:25:27 +08:00
|
14
momocraft 2023-01-24 00:40:43 +08:00
不要在公网 IP listen, 可以用一个只有 nginx 能访问到的 IP
这个 IP 怎么获得视乎你 nginx 怎么跑的 nginx 也在 docker 跑吗? |
16
fengpan567 2023-01-24 10:30:34 +08:00
docker 和 Nginx 都部署在同一台服务器的话,容器只监听本机 ip 可以达到你要的效果,但是这样也不安全。
docker run -d -p 127.0.0.1:hostPort:containerPort image |
17
realpg 2023-01-24 11:21:22 +08:00
门口立了个老王家的门牌不能拦住不看门牌推门就进的人
|
18
lff0305 2023-01-24 15:58:50 +08:00 via Android
在一个 docker network 中启动 Web 和 Nginx 。Web 服务不要暴露容器内端口到 host 机器,
Nginx 需要 暴露端口。同时 Nginx 使用 Web 的容器内私有 IP 配置转发 或者就用 docker compose, 比较省事 |
19
Posuker 2023-01-24 22:09:12 +08:00
应该是没有配默认请求,所以走 ip 还是能访问到站点。
在 nginx 配置里加一个 default 的配置,抛出个 403 / 404 之类的错误,就不能直接通过 ip 访问了 |