阻止网站访问不通过预定的域名

我有一个在Debian上有多个域的nginx服务器。 他们都住在html文件夹中。 然后Alogging指向我的服务器,您可以通过访问https://mywebsite.biz访问/var/www/html/mywebsite.biz的文件。 我也使用Let's Encrypt分配他们的TLS证书。

它看起来像这样:

 └── html ├── mywebsite.biz ├── anotherwebsite.net ├── example-three.com └── somewebsite.ca 

但是,您可以通过我的IP地址访问该html文件夹而无需TLS,如下所示:

http://216.58.216.78/mywebsite.biz

但是我也有这样的情况,我希望这样的事情发生。 例如,如果我想设置一个testing站点,然后才能将该域指向我的服务器。 为此,我使用noip.com为其分配一个友好名称,如下所示:

http://myservername.ddns.net/somewebsite.ca (只是一个testing网站)

只有一些网站通过IP地址/友好名称拒绝访问的最佳方式是什么?

拒绝/redirect这些:

http://myservername.ddns.net/mywebsite.biz

http://216.58.216.78/mywebsite.biz

允许这个:

http://myservername.ddns.net/somewebsite.ca

我的猜测是在那里redirect它们,但是我对nginx有点新,并且想确保这是最好的方法。

使用此网站configuration。 它基本上阻止了Nginx通过IP响应请求。 “default_server”指令是关键部分。

 # This just prevents Nginx picking a random default server if it doesn't know which server block to send a request to server { listen 80 default_server; server_name _; return 444; # This means "go away", effectively access_log off; log_not_found off; # Optional } 

虽然它可能做你想要使用一堆正则expression式匹配的请求的URL,我会避免通过IP访问父(HTML)的目录,因为: –

  • 未来(安全)将很容易搞砸,
  • 这将是很难排除故障
  • 一些网站包含绝对链接或相对于/不正确的链接

相反,要在configuration和使用域之前testing网站,只需: –

  • 像你平时一样configurationNGINX
  • 在客户端PC上的主机文件中添加一个条目,以将名称parsing为正确的IP。

在Linux上,hosts文件是/etc/hosts

在Windows上,hosts文件是c:\windows\system32\drivers\etc\hosts

这是一个示例主机文件条目216.58.216.78 www.myfunkysite.com