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