nginx 如何禁止 ip 直接访问

2015-11-28 11:52:15 +08:00
 honmaple
原谅我网上教程没看懂
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 80 ;
server_name xxx.xxx;

# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;

# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server 加上 default_server 后报错
nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:47
nginx: configuration file /etc/nginx/nginx.conf test failed
如果不加那么没效果
去掉第一个 server 直接访问 ip 会出现 Welcome to nginx 页面

求助,环境是 python+flask+gunicorn+nginx
8241 次点击
所在节点    NGINX
25 条回复
sparanoid
2015-11-28 11:53:07 +08:00
server_name _; 的下划线改成 IP ?
songjiaxin2008
2015-11-28 11:54:57 +08:00
发一个我的配置文件

server
{
listen 80 default;
return 400;
}
songjiaxin2008
2015-11-28 11:55:31 +08:00
IP 是 182.254.150.158
honmaple
2015-11-28 11:58:36 +08:00
@sparanoid 还是不行
honmaple
2015-11-28 12:00:29 +08:00
@songjiaxin2008 能否告知其他 server 段,我的加了 default 或者 default_server 就报错
Starting nginx: nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:42
[FAILED]
Pastsong
2015-11-28 12:02:21 +08:00
nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:47

去你 nginx.conf 里看,那里是不是还有哪个 server 标了 default
songjiaxin2008
2015-11-28 12:03:36 +08:00
@honmaple 你要把这个单独写一个在 conf 文件里面 一个 conf 里面不可以同时监听 2 次 80
Pastsong
2015-11-28 12:05:21 +08:00
@songjiaxin2008 当然是可以同时监听的,只要 server_name 不一样,写不同的 conf 主要是为了好管理
songjiaxin2008
2015-11-28 12:07:37 +08:00
@Pastsong 嗯理解错了 看报错是有重复的监听 另外请教一下 开启了 SNI 的情况下 如何禁止 https 加 IP 形式的访问?
Andy1999
2015-11-28 12:29:13 +08:00
我用 iptables 干掉
honmaple
2015-11-28 12:32:21 +08:00
@Pastsong 多谢了,我在 /etc/nginx/conf.d/里找到一个 default_server;把它去了就行
mysteri0uss
2015-11-28 12:46:41 +08:00
listen 80;

if ( $host ~* "\d+\.\d+\.\d+\.\d+" ) {
return 403;
}
Daddy
2015-11-28 13:37:08 +08:00
@songjiaxin2008 为何这么浪费一个 IP , IP 也可以做一个网站的,可节省一个域名的开支, http://107.182.182.6
manhere
2015-11-28 13:49:10 +08:00
@Daddy 防止别人绑定
realpg
2015-11-28 14:07:50 +08:00
直接建立一个 hostname 为 IP 地址的虚拟主机 根目录啥也没有就行了
thenbsp
2015-11-28 14:25:27 +08:00
pathbox
2015-11-28 14:30:52 +08:00
你想防止这个 IP 的爬虫爬你的网站?
ab
2015-11-28 15:38:18 +08:00
server
{
listen 80 default_server;
return 500;
}
salmon5
2015-11-28 20:44:48 +08:00
引用大家的,最最优雅的实现:
server
{
listen 80 default_server;
return 501;
}

为什么 501 , taobao.com,tmall.com 都是 501 。
salmon5
2015-11-28 20:46:21 +08:00
server {
listen 80 default_server;
return 501;
}
server {
listen 443 ssl default_server;
return 501;
}

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

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

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

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

© 2021 V2EX