如何禁止通过 ip 访问网站

2017 年 6 月 19 日
 blankme

http://ip 这种形式已经可以拒绝了,但 https://ip 仍然可以访问(虽然会有红叉)。

找了很久也没找到有效的方法,望各位 v 友不吝赐教。

我想要的效果基本上和这个问题最后总结的一样:Block direct access to webserver IP via HTTPS

以下是我目前使用的 nginx 配置:

server {
	listen 80 default;
	return 403;
}

server {
	listen 80;
	server_name example.com;
	rewrite ^ https://$host$request_uri? permanent;
}

server {
        listen 443 http2 ssl;

        server_name example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;


        location ~ /.well-known {
                allow all;
        }

	root /var/www/test/public;
	index index.html;

        location / {
		try_files $uri $uri/ /index.html;
        }
}
4052 次点击
所在节点    问与答
11 条回复
cst4you
2017 年 6 月 19 日
你再 listen 个 443 的 default 不就好了
blankme
2017 年 6 月 19 日
@cst4you 这样会把域名访问一起屏蔽掉
dzxx36gyy
2017 年 6 月 19 日
加个 server_name 是 ip 的,然后跳转到你的域名
haozi1986
2017 年 6 月 19 日
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate <path to cert>
ssl_certificate_key <path to key>
return 404;
}

这个是我的配置~~
katsusan
2017 年 6 月 19 日
弱弱地问个问题,能直接通过 ip 访问有什么坏处么
blankme
2017 年 6 月 19 日
@haozi1986 原来按照这种方法没走通,还以为不能用。后来发现是证书配置不对,已解决,感谢。
blankme
2017 年 6 月 19 日
@katsusan 不算坏处吧,就是自己玩一下。如果一个 ip 对应多个网站,可以避免非期望的跳转,也许算是一个好处。
garyalen
2017 年 6 月 19 日
@haozi1986 最好不要用 404 搜索引擎很久都不会再爬了 推荐用 403
gongjianwei
2017 年 6 月 19 日
ququ 的配置里面有这个,我做点修改发上来

https://imququ.com/post/my-nginx-conf.html#toc-6

```
server {
listen example.com www.example.com <your_ip>;

# ... #

# If site is not "example.com", return to "https://example.com"
if ($host != 'example.com' ) {
rewrite ^/(.*)$ https://example.com/$1 permanent;
}
}
```
gongjianwei
2017 年 6 月 19 日
gongjianwei
2017 年 6 月 22 日
@gongjianwei 做一些说明
企图通过这种方法干翻小红叉是不可能的,HTTPS 就是要先握手交换密钥
但是这个可以让 IP 访问强行忽略错误的时候,继续跳转回域名
当然你也可以将 rewrite 替换成 return 444 或者 400,这没问题

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

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

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

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

© 2021 V2EX