<p dir="ltr">On 6 Jun 2014 08:49, "basti" <<a href="mailto:black.fledermaus@arcor.de">black.fledermaus@arcor.de</a>> wrote:<br>
><br>
> Hello,<br>
><br>
> I try to block wildcard sub domains as follows:<br>
><br>
><br>
> # block wildcard<br>
> server {<br>
>   server_name ~^(.*)\.example\.com$ ;<br>
>   root /usr/share/nginx/www;<br>
>   error_page 403 /index.html;<br>
>   allow 127.0.0.1;<br>
>   deny  all;<br>
>   access_log off;<br>
>   log_not_found off;<br>
> }</p>
<p dir="ltr">I'm sure there's a precedence rule that'll explain this but I don't have it to hand.</p>
<p dir="ltr">However, have you considered merely telling that server{} to listen only on 127.0.0.1?</p>
<p dir="ltr">You may also wish to look at the server_name  documentation for the shorthand of "*.<a href="http://foo.com">foo.com</a>" instead of the regex you're using.</p>
<p dir="ltr">Finally, if your aim is just to deny requests for hosts you haven't explicitly configured elsewhere in nginx's config file, I find the following to be a useful catchall. Use it alongside well-defined server_names in other server blocks. </p>

<p dir="ltr">server {<br>
  listen 80 default_server; <br>
  server_name _;<br>
  location / { return 404; }<br>
}</p>
<p dir="ltr">HTH, <br>
J</p>