Default Server Block
Igor Sysoev
igor at sysoev.ru
Thu May 6 21:26:04 MSD 2010
On Thu, May 06, 2010 at 10:19:07AM -0700, W. Andrew Loe III wrote:
> The wiki says:
>
> "If the directive has the default parameter, then the enclosing server
> {...} block will be the default server for the address:port pair. This
> is useful for name-based virtual hosting where you wish to specify the
> default server block for hostnames that do not match any server_name
> directives. If there are no directives with the default parameter,
> then the default server will be the first server block in which the
> address:port pair appears."
>
> I have multiple server blocks listening on both 80 and 443:
>
> server {
> listen 80;
> server_name mydomain.com;
> ...
> }
>
> server {
> listen 443;
> server_name mydomain.com;
>
> ssl on;
> ssl_certificate certs/mydomain.crt;
> ssl_certificate_key certs/mydomain.key;
>
> ...
> }
>
> server {
> listen 80;
> server_name myotherdomain.com;
> ...
> }
>
> server {
> listen 443;
> server_name myotherdomain.com;
>
> ssl on;
> ssl_certificate certs/myotherdomain.crt;
> ssl_certificate_key certs/myotherdomain.key;
>
> ...
> }
>
> Does this mean if a request with either an unmatched Host header or no
> Host header, will go to port 80 for mydomain.com because it is the
> first block, or will this request get dropped because it does not
> match any server_name directives?
It will go to the first block.
> If it is being served by the first block, would I catch this with a
> server_name of "" and a default directive?
>
> # Catch-all, redirect somewhere useful.
> server {
> listen 80 default;
> server_name "";
>
> # Do something useful with this traffic;
> }
It is catched by "default" server for listen port.
Please read this:
http://nginx.org/en/docs/http/request_processing.html
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list