server_name "";
Igor Sysoev
igor at sysoev.ru
Sat Dec 19 22:58:09 MSK 2009
On Sat, Dec 19, 2009 at 02:41:10PM -0500, Sean Allen wrote:
> On Sat, Dec 19, 2009 at 2:28 PM, Sean Allen <sean at monkeysnatchbanana.com> wrote:
> > 2009/12/19 Igor Sysoev <igor at sysoev.ru>:
> >> On Sat, Dec 19, 2009 at 02:15:55PM -0500, Sean Allen wrote:
> >>
> >>> 2009/12/19 Igor Sysoev <igor at sysoev.ru>:
> >>> > On Sat, Dec 19, 2009 at 10:59:39AM -0500, Sean Allen wrote:
> >>> >
> >>> >> On Fri, Dec 18, 2009 at 8:38 PM, merlin corey <merlincorey at dc949.org> wrote:
> >>> >> > On Fri, Dec 18, 2009 at 3:04 PM, Sean Allen <sean at monkeysnatchbanana.com> wrote:
> >>> >> >> On Fri, Dec 18, 2009 at 5:51 PM, Peter Leonov <gojpeg at gmail.com> wrote:
> >>> >> >>> On 19.12.2009, at 1:14, Sean Allen wrote:
> >>> >> >>>
> >>> >> >>>> we are running 0.7.64
> >>> >> >>>>
> >>> >> >>>> have this as a server:
> >>> >> >>>>
> >>> >> >>>> server
> >>> >> >>>> {
> >>> >> >>>> server_name "";
> >>> >> >>>>
> >>> >> >>>> location /
> >>> >> >>>> {
> >>> >> >>>> return 404;
> >>> >> >>>> }
> >>> >> >>>> }
> >>> >> >>>>
> >>> >> >>>> when we try to startup we get:
> >>> >> >>>>
> >>> >> >>>> [emerg]: the first server name must not be empty in
> >>> >> >>>> /ah/conf/nginx/default_server.conf:4
> >>> >> >>>>
> >>> >> >>>> wiki says:
> >>> >> >>>>
> >>> >> >>>> Since nginx 0.7.12, an empty server name is supported, to catch the
> >>> >> >>>> requests without "Host" header:
> >>> >> >>>>
> >>> >> >>>> server {
> >>> >> >>>> server_name "";
> >>> >> >>>> }
> >>> >> >>>
> >>> >> >>> We use the underscore + listen default.
> >>> >> >>>
> >>> >> >>> server
> >>> >> >>> {
> >>> >> >>> server_name _;
> >>> >> >>> listen 80 default;
> >>> >> >>> location / { return 404; }
> >>> >> >>> }
> >>> >> >>>
> >>> >> >>
> >>> >> >> That works except, it is getting blocked by another and I'm not sure why.
> >>> >> >> I'm doing this on a local network right now and m.example.com is 192.16.8.1.125
> >>> >> >> if m.example.com is setup then this doesn't get used.
> >>> >> >>
> >>> >> >> m.example.com has:
> >>> >> >>
> >>> >> >> server
> >>> >> >> {
> >>> >> >> listen m.example.com;
> >>> >> >> server_name m.example.com;
> >>> >> >> }
> >>> >> >>
> >>> >> >> So from the wiki,
> >>> >> >> if I do a request not to m.example.com but 192.168.1.125
> >>> >> >> shouldnt the listen 80 default server block be the one that handles
> >>> >> >> the response?
> >>> >> >>
> >>> >> >> _______________________________________________
> >>> >> >> nginx mailing list
> >>> >> >> nginx at nginx.org
> >>> >> >> http://nginx.org/mailman/listinfo/nginx
> >>> >> >>
> >>> >> >
> >>> >> > FYI Igor's latest documents at:
> >>> >> > http://nginx.org/en/docs/http/request_processing.html suggest the
> >>> >> > following configuration:
> >>> >> >
> >>> >> > server {
> >>> >> > listen 80 default_server;
> >>> >> > server_name _;
> >>> >> > return 444;
> >>> >> > }
> >>> >> >
> >>> >> > You will note that now we use default_server, the server_name _, and
> >>> >> > no need for a location to hold the return code.
> >>> >>
> >>> >> I'm running 0.7.64 and after switching 'default_server' to default per
> >>> >> the wiki doc you referenced,
> >>> >> this still doesnt work. It doesnt respond as the default server
> >>> >>
> >>> >> i have
> >>> >>
> >>> >> m.example.com is still answering when you
> >>> >>
> >>> >> wget http://192.168.1.125/
> >>> >
> >>> > Have you looked this:
> >>> > http://nginx.org/en/docs/http/server_names.html#miscellaneous_names
> >>> > http://nginx.org/en/docs/http/request_processing.html
> >>> >
> >>>
> >>> Yes.
> >>>
> >>> Question as this isnt clear to me.
> >>>
> >>> If I have a server
> >>>
> >>> server
> >>> {
> >>> listen m.example.com;
> >>> server_name m.example.com;
> >>> }
> >>>
> >>> and m.example.com is 192.168.1.125
> >>>
> >>> and i also have
> >>>
> >>> server
> >>> {
> >>> listen 80
> >>> server_name _;
> >>> }
> >>>
> >>> which one should handle a request w/o a hostname to 192.168.1.125?
> >>
> >> It will be handled by default server.
> >>
> >
> > this one?
> >
> > server
> > {
> > listen 80 default;
> > server_name _;
> > return 444;
> > }
> >
> > because that isn't what is happening for me and i have a really basic
> > setup right now
> > as we are starting over with a new system and i'm building up from simple stuff.
> >
> > the default server for me answers on all interfaces except
> > 192.168.1.125 for which
> >
> > wget 192.168.1.125
> >
> > is being handled by m.example.com
> >
>
> this is all the server blocks in order...
>
> server
> {
> listen www.example.com;
> server_name www.example.com;
>
> root /ah/sites/www.example.com/public;
>
> access_log /var/log/ah/www.example.com.log combined;
> if ( -f $document_root/.maintenance )
> {
> set $maintenance 1;
> }
>
> if ( $uri ~ ^/maintenance/ )
> {
> set $maintenance 0;
> }
>
> if ( $maintenance )
> {
> rewrite (.*) /maintenance/maintenance.html;
> }
> if ( $request_method = 'DELETE' ) { return 501; }
> if ( $request_method = 'PUT' ) { return 501; }
>
> location ~ /favicon.(ico|gif)$ { return 404; }
>
>
> location /
> {
> expires 7d;
>
> }
> }
nginx does not support PUT/DELETE by default.
Why not use clear try_files instead of these ugly maintenance if/set/rewrites:
server
{
listen www.example.com;
server_name www.example.com;
root /ah/sites/www.example.com/public;
access_log /var/log/ah/www.example.com.log combined;
location /
{
try_files /maintenance/maintenance.html $uri =404;
expires 7d;
}
location = /favicon.ico { return 404; }
location = /favicon.gif { return 404; }
}
> server
> {
> listen example.com;
> server_name .example.com;
>
> rewrite (.*) http://www.example.com$1 permanent;
> }
>
> upstream gemstone
> {
> server 127.0.0.1:8383;
> }
>
>
> server
> {
> listen m.example.com;
> server_name m.example.com;
>
> root /ah/sites/m.example.com/public;
>
> access_log /var/log/ah/m.example.com.log combined;
> if ( -f $document_root/.maintenance )
> {
> set $maintenance 1;
> }
>
> if ( $uri ~ ^/maintenance/ )
> {
> set $maintenance 0;
> }
>
> if ( $maintenance )
> {
> rewrite (.*) /maintenance/maintenance.html;
> }
> if ( $request_method = 'DELETE' ) { return 501; }
> if ( $request_method = 'PUT' ) { return 501; }
>
> location ~ /favicon.(ico|gif)$ { return 404; }
>
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Host $http_host;
> proxy_redirect off;
> proxy_read_timeout 90;
>
>
> location /
> { expires 7d;
>
> index index.html index.htm;
> try_files $uri $uri/ @seaside;
> error_page 403 = @seaside;
> }
>
> location ~ ^/$
> {
> index no;
> error_page 403 = @seaside;
> }
location = /
{
proxy_pass http://gemstone;
}
> location @seaside
> {
> proxy_pass http://gemstone;
> }
> }
>
> server
> {
> listen m.example.com:443;
> server_name m.example.com;
>
> ssl on;
> ssl_certificate /ah/sites/m.example.com/conf/m.example.com.crt;
> ssl_certificate_key /ah/sites/m.example.com/conf/m.example.com.key;
> ssl_ciphers ALL:-ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
>
> root /ah/sites/m.example.com/public;
>
> access_log /var/log/ah/m.example.com.log combined; if ( -f
> $document_root/.maintenance )
> {
> set $maintenance 1;
> }
>
> if ( $uri ~ ^/maintenance/ )
> {
> set $maintenance 0;
> }
>
> if ( $maintenance )
> {
> rewrite (.*) /maintenance/maintenance.html;
> } if ( $request_method = 'DELETE' ) { return 501; }
> if ( $request_method = 'PUT' ) { return 501; }
> location ~ /favicon.(ico|gif)$ { return 404; }
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_set_header Host $http_host;
> proxy_redirect off;
> proxy_read_timeout 90;
>
>
> location /
> { expires 7d;
>
> index index.html index.htm;
> try_files $uri $uri/ @seaside;
> error_page 403 = @seaside;
>
> }
>
> location ~ ^/$
> {
> index no;
> error_page 403 = @seaside;
> }
>
> location @seaside
> {
> proxy_pass http://gemstone;
> }
> }
>
> server
> {
> listen 80 default;
> server_name _;
>
> location /
> {
> return 404;
> }
> }
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list