nginx 设置屏蔽所有IP访问 允许1.1.1.1访问
时间: 2023-08-25 16:05:38 浏览: 60
可以使用以下Nginx配置来实现屏蔽所有IP访问,只允许1.1.1.1访问:
```
# 屏蔽所有IP访问
server {
listen 80 default_server;
server_name _;
return 403;
}
# 允许1.1.1.1访问
server {
listen 80;
server_name example.com;
allow 1.1.1.1;
deny all;
# ... 其他配置
}
```
在第一个server块中,我们设置了listen 80 default_server,这表示所有没有匹配到其他server块的请求都会被这个server块处理。在这个server块中,我们设置了server_name _,表示所有域名都会被匹配。然后,我们使用return 403来返回一个403 Forbidden响应,从而屏蔽所有IP访问。
在第二个server块中,我们设置了允许1.1.1.1访问,拒绝所有其他IP访问。这可以通过allow和deny指令来实现。注意,这个server块中必须要有一个具体的server_name,否则Nginx会抛出一个警告。
相关问题
我有两台服务器,一台ip1.1.1.1,一台1.1.1.2,我希望通过访问1.1.1.1:35555/dataease/XXX地址访问到部署在IP为1.1.1.2的服务器80端口上的dataease页面,可使用nginx,该如何实现
可以使用nginx的反向代理功能,将1.1.1.2上的dataease页面代理到1.1.1.1上。具体操作如下:
1. 在1.1.1.1服务器上安装nginx。
2. 编辑nginx的配置文件,在http块中添加以下配置:
```
server {
listen 35555;
server_name 1.1.1.1;
location /dataease/ {
proxy_pass http://1.1.1.2:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
其中,listen指定代理服务器监听的端口号,server_name指定代理服务器的域名或IP地址,location指定要代理的URL路径,proxy_pass指定实际的后端服务器地址,后面的几个proxy_set_header指定转发的一些HTTP头信息。
3. 重启nginx服务,访问1.1.1.1:35555/dataease/XXX即可访问到1.1.1.2服务器上的dataease页面。
帮我写个nginx判断$host不为1.1.1.1或者1.1.2.2就返回404
可以使用nginx的if语句来实现,如下所示:
```
server {
listen 80;
server_name example.com;
if ($host != "1.1.1.1" && $host != "1.1.2.2") {
return 404;
}
# 其他配置
}
```
这段代码的意思是,如果请求的host不是1.1.1.1或1.1.2.2,则返回404状态码。注意,使用if语句会对性能产生一定的影响,因此建议尽量避免过多的if语句。