Nginx禁止IP直接访问网站

首先不能让用户通过ip直接访问网站,我们必须要有域名,只能通过域名访问网站。

看一下怎么配置:
先配置处理域名的虚拟主机(通过域名访问的正常行为),代码如下:

这个配置是你的网站的默认行为,如处理php等等。

然后配置一下默认的虚拟主机行为,与上述(或你配置的非默认虚拟主机)listen和server_name不符的请求(如直接用ip访问)会在这里处理,代码:
listen address[:port] [default_server]
  • address监听的主机名,port默认为80,default_server指定该虚拟主机为默认主机。
  • server_name _ 这行没多大作用,所有与其他虚拟主机配置没有匹配的都转到这里处理了,不会和server_name这一项匹配,_也可以改成其他的字符。
  • return 404 是返回状态码404,return 301 http://*** 意思是跳转到指定域名,也可以用 rewrite ^ http://*** (0.9.1及以前版本只能用rewrite)
如果你希望你的****.com(不带www,或者其他域名)跳转到www.****.com,就要单独添加配置:

以上三个server配置项为独立,不要把里面的配置写在一个server里,一个server处理一种域名。

另:return 301 http://www.****.com; 这个只会跳转到网站首页,如果用户访问http://****.com/abc/时,跳转后不会添加/abc/,这时,我们需要在域名后加上$request_uri,所以,一般301跳转时可配置为:return 301 http://www.****.com$request_uri;这样就会直接访问用户想访问的页面了,而不是跳到首页。

发表评论