如何禁止通过 ip 访问网站

2017-06-19 10:32:07 +08:00
 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;
        }
}
3330 次点击
所在节点    问与答
11 条回复
cst4you
2017-06-19 10:43:57 +08:00
你再 listen 个 443 的 default 不就好了
blankme
2017-06-19 10:45:25 +08:00
@cst4you 这样会把域名访问一起屏蔽掉
dzxx36gyy
2017-06-19 10:52:51 +08:00
加个 server_name 是 ip 的,然后跳转到你的域名
haozi1986
2017-06-19 11:16:13 +08:00
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-06-19 12:22:43 +08:00
弱弱地问个问题,能直接通过 ip 访问有什么坏处么
blankme
2017-06-19 14:26:38 +08:00
@haozi1986 原来按照这种方法没走通,还以为不能用。后来发现是证书配置不对,已解决,感谢。
blankme
2017-06-19 14:30:59 +08:00
@katsusan 不算坏处吧,就是自己玩一下。如果一个 ip 对应多个网站,可以避免非期望的跳转,也许算是一个好处。
lan894734188
2017-06-19 14:57:27 +08:00
@haozi1986 最好不要用 404 搜索引擎很久都不会再爬了 推荐用 403
gongjianwei
2017-06-19 17:26:01 +08:00
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-06-19 17:31:36 +08:00
gongjianwei
2017-06-22 20:09:29 +08:00
@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