我有一个在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网站,只需: –
在Linux上,hosts文件是/etc/hosts
在Windows上,hosts文件是c:\windows\system32\drivers\etc\hosts
这是一个示例主机文件条目216.58.216.78 www.myfunkysite.com