Nginx禁止IP或者未绑定域名访问
18 Dec, 2011
在配置博客运行环境时发现,由于VPS使用的是独立IP,这样就可以通过IP地址直接访问博客,这点还是勉强可以接受的,不过这个IP可能是以前别人使用过并绑定过域名的,这就不好了,别人可以通过其他域名访问自己的博客,这就太不好了。
于是网上找了一下方法,试了一下都比较有问题,于是自己想了一个办法。主要就是使用default_server
的方法。主要想法是,将自己的博客作为一个虚拟主机,而IP等访问则是访问default_server
,而default_serverv
我们可以让它跳转到博客或者直接让它出错。
还是看下面的Nginx.conf吧。
server {
listen 80;
server_name serholiu.com;
# Allow file uploads
client_max_body_size 50M;
location ^~ /static/ {
root /home/blog/app;
if ($query_string) {
expires max;
}
}
location = /favicon.ico {
rewrite (.*) /static/favicon.ico;
}
location = /robots.txt {
rewrite (.*) /static/robots.txt;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
}
这个是我博客的配置文件,没什么好说的,使用Nginx做反向代理。如果只是这一个Server的话,访问IP或者其他绑定了这个IP的域名也会直接访问本博客,现在只需要一个Default Server就可以了,见下面:
server {
listen 80 default_server;
server_name _;
location / {
root /home/www;
index index.html index.htm;
}
}
这样,通过IP或者其他未指定的域名就会访问/home/www
里的资源了,当然,可以直接让它报错。